home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1995-10-30 | 31.0 KB | [TEXT/MMCC] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
1%
| dexvert
| MS-DOS Code Page Info (other/dosCodePage)
| ext
| Unsupported |
1%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Mon Oct 30 16:48:53 1995, modified Mon Oct 30 16:48:53 1995, creator 'MMCC', type ASCII, 31042 bytes "GroupControlObject.cp" , at 0x79c2 410 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| dearkID
| deark: macbinary
| default
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MMCC] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 15 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 |..GroupC|ontrolOb|
|00000010| 6a 65 63 74 2e 63 70 00 | 00 00 00 00 00 00 00 00 |ject.cp.|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 4d 43 | 43 01 00 00 00 00 00 00 |.TEXTMMC|C.......|
|00000050| 00 00 00 00 00 79 42 00 | 00 01 9a ac ba f8 c5 ac |.....yB.|........|
|00000060| ba f8 c5 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 05 fd 00 00 |........|........|
|00000080| 2f 2f 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |//======|========|
|00000090| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000d0| 3d 3d 0d 2f 2f 20 47 72 | 65 67 20 41 6e 64 65 72 |==.// Gr|eg Ander|
|000000e0| 73 6f 6e 0d 2f 2f 20 64 | 62 2b 0d 2f 2f 0d 2f 2f |son.// d|b+.//.//|
|000000f0| 20 47 72 6f 75 70 20 63 | 6f 6e 74 72 6f 6c 20 6f | Group c|ontrol o|
|00000100| 62 6a 65 63 74 0d 2f 2f | 20 31 37 20 4d 61 79 20 |bject.//| 17 May |
|00000110| 31 39 39 34 0d 2f 2f 20 | 33 31 20 44 65 63 20 31 |1994.// |31 Dec 1|
|00000120| 39 39 34 0d 2f 2f 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |994.//==|========|
|00000130| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000140| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000150| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000160| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000170| 3d 3d 3d 3d 3d 3d 0d 0d | 23 69 6e 63 6c 75 64 65 |======..|#include|
|00000180| 20 22 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | "GroupC|ontrolOb|
|00000190| 6a 65 63 74 2e 68 22 0d | 0d 23 69 6e 63 6c 75 64 |ject.h".|.#includ|
|000001a0| 65 20 22 44 61 74 61 62 | 61 73 65 44 6f 63 75 6d |e "Datab|aseDocum|
|000001b0| 65 6e 74 2e 68 22 0d 23 | 69 6e 63 6c 75 64 65 20 |ent.h".#|include |
|000001c0| 22 41 62 73 74 72 61 63 | 74 52 65 63 6f 72 64 2e |"Abstrac|tRecord.|
|000001d0| 68 22 0d 0d 23 69 6e 63 | 6c 75 64 65 20 22 45 78 |h"..#inc|lude "Ex|
|000001e0| 63 65 70 74 69 6f 6e 73 | 2e 68 22 0d 0d 2f 2f 0d |ceptions|.h"..//.|
|000001f0| 2f 2f 20 46 6f 72 20 6d | 65 6d 63 70 79 0d 2f 2f |// For m|emcpy.//|
|00000200| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 72 69 6e |.#includ|e <strin|
|00000210| 67 2e 68 3e 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |g.h>..//|--------|
|00000220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00000270| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00000280| 3a 7e 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |:~TGroup|ControlO|
|00000290| 62 6a 65 63 74 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |bject.//|--------|
|000002a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002e0| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 54 47 72 6f 75 70 43 |--------|.TGroupC|
|000002f0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 7e 54 |ontrolOb|ject::~T|
|00000300| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00000310| 63 74 28 29 0d 7b 0d 7d | 20 2f 2f 20 54 47 72 6f |ct().{.}| // TGro|
|00000320| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00000330| 3a 7e 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |:~TGroup|ControlO|
|00000340| 62 6a 65 63 74 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |bject../|/-------|
|00000350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000370| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 47 72 |--------|-.// TGr|
|000003a0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|000003b0| 3a 3a 49 6e 69 74 69 61 | 6c 69 7a 65 52 65 63 6f |::Initia|lizeReco|
|000003c0| 72 64 43 75 72 73 6f 72 | 73 0d 2f 2f 2d 2d 2d 2d |rdCursor|s.//----|
|000003d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000003e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000003f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 76 6f 69 |--------|----.voi|
|00000420| 64 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |d TGroup|ControlO|
|00000430| 62 6a 65 63 74 3a 3a 49 | 6e 69 74 69 61 6c 69 7a |bject::I|nitializ|
|00000440| 65 52 65 63 6f 72 64 43 | 75 72 73 6f 72 73 28 29 |eRecordC|ursors()|
|00000450| 0d 7b 0d 09 66 6f 72 28 | 73 68 6f 72 74 20 69 3d |.{..for(|short i=|
|00000460| 30 3b 20 69 3c 6b 52 65 | 63 6f 72 64 73 50 65 72 |0; i<kRe|cordsPer|
|00000470| 47 72 6f 75 70 3b 20 2b | 2b 69 29 0d 09 09 66 52 |Group; +|+i)...fR|
|00000480| 65 63 6f 72 64 43 75 72 | 73 6f 72 73 5b 69 5d 20 |ecordCur|sors[i] |
|00000490| 3d 20 6e 69 6c 3b 0d 7d | 20 2f 2f 20 54 47 72 6f |= nil;.}| // TGro|
|000004a0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|000004b0| 3a 49 6e 69 74 69 61 6c | 69 7a 65 52 65 63 6f 72 |:Initial|izeRecor|
|000004c0| 64 43 75 72 73 6f 72 73 | 0d 0d 2f 2f 2d 2d 2d 2d |dCursors|..//----|
|000004d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000004e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000004f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 2f 2f 20 |--------|----.// |
|00000520| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00000530| 65 63 74 3a 3a 44 6f 63 | 75 6d 65 6e 74 4b 65 79 |ect::Doc|umentKey|
|00000540| 53 70 61 63 65 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |Space.//|--------|
|00000550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000580| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000590| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 49 6e 74 36 34 20 54 |--------|.Int64 T|
|000005a0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|000005b0| 63 74 3a 3a 44 6f 63 75 | 6d 65 6e 74 4b 65 79 53 |ct::Docu|mentKeyS|
|000005c0| 70 61 63 65 28 29 0d 7b | 0d 09 72 65 74 75 72 6e |pace().{|..return|
|000005d0| 20 44 42 44 6f 63 75 6d | 65 6e 74 28 29 2d 3e 4f | DBDocum|ent()->O|
|000005e0| 62 6a 65 63 74 73 4b 65 | 79 53 70 61 63 65 28 29 |bjectsKe|ySpace()|
|000005f0| 3b 0d 7d 20 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |;.} // T|GroupCon|
|00000600| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 44 6f 63 75 |trolObje|ct::Docu|
|00000610| 6d 65 6e 74 4b 65 79 53 | 70 61 63 65 0d 0d 2f 2f |mentKeyS|pace..//|
|00000620| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000640| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000650| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000660| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000670| 0d 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |.// TGro|upContro|
|00000680| 6c 4f 62 6a 65 63 74 3a | 3a 43 61 6c 63 75 6c 61 |lObject:|:Calcula|
|00000690| 74 65 52 65 6c 61 74 69 | 76 65 49 6e 64 65 78 0d |teRelati|veIndex.|
|000006a0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|000006b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006f0| 2d 2d 0d 6c 6f 6e 67 20 | 54 47 72 6f 75 70 43 6f |--.long |TGroupCo|
|00000700| 6e 74 72 6f 6c 4f 62 6a | 65 63 74 3a 3a 43 61 6c |ntrolObj|ect::Cal|
|00000710| 63 75 6c 61 74 65 52 65 | 6c 61 74 69 76 65 49 6e |culateRe|lativeIn|
|00000720| 64 65 78 28 6c 6f 6e 67 | 20 72 65 63 6f 72 64 49 |dex(long| recordI|
|00000730| 6e 64 65 78 29 20 63 6f | 6e 73 74 0d 7b 0d 09 6c |ndex) co|nst.{..l|
|00000740| 6f 6e 67 20 72 65 6c 61 | 74 69 76 65 49 6e 64 65 |ong rela|tiveInde|
|00000750| 78 20 3d 20 72 65 63 6f | 72 64 49 6e 64 65 78 20 |x = reco|rdIndex |
|00000760| 2d 20 74 68 69 73 2d 3e | 46 69 72 73 74 52 65 63 |- this->|FirstRec|
|00000770| 6f 72 64 49 6e 64 65 78 | 28 29 3b 0d 09 0d 09 69 |ordIndex|();....i|
|00000780| 66 28 28 72 65 6c 61 74 | 69 76 65 49 6e 64 65 78 |f((relat|iveIndex|
|00000790| 20 3c 20 30 29 20 7c 7c | 20 28 72 65 6c 61 74 69 | < 0) ||| (relati|
|000007a0| 76 65 49 6e 64 65 78 20 | 3e 3d 20 6b 52 65 63 6f |veIndex |>= kReco|
|000007b0| 72 64 73 50 65 72 47 72 | 6f 75 70 29 29 0d 09 09 |rdsPerGr|oup))...|
|000007c0| 54 68 72 6f 77 28 65 49 | 6e 64 65 78 4f 75 74 4f |Throw(eI|ndexOutO|
|000007d0| 66 52 61 6e 67 65 29 3b | 0d 09 0d 09 72 65 74 75 |fRange);|....retu|
|000007e0| 72 6e 20 72 65 6c 61 74 | 69 76 65 49 6e 64 65 78 |rn relat|iveIndex|
|000007f0| 3b 0d 7d 20 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |;.} // T|GroupCon|
|00000800| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 43 61 6c 63 |trolObje|ct::Calc|
|00000810| 75 6c 61 74 65 52 65 6c | 61 74 69 76 65 49 6e 64 |ulateRel|ativeInd|
|00000820| 65 78 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ex..//--|--------|
|00000830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000870| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00000880| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 4e |ControlO|bject::N|
|00000890| 65 78 74 52 65 63 6f 72 | 64 49 6e 64 65 78 0d 2f |extRecor|dIndex./|
|000008a0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000008b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008f0| 2d 0d 6c 6f 6e 67 20 54 | 47 72 6f 75 70 43 6f 6e |-.long T|GroupCon|
|00000900| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 4e 65 78 74 |trolObje|ct::Next|
|00000910| 52 65 63 6f 72 64 49 6e | 64 65 78 28 6c 6f 6e 67 |RecordIn|dex(long|
|00000920| 20 72 65 63 6f 72 64 49 | 6e 64 65 78 29 20 63 6f | recordI|ndex) co|
|00000930| 6e 73 74 0d 7b 0d 09 6c | 6f 6e 67 20 66 6c 61 67 |nst.{..l|ong flag|
|00000940| 73 20 3d 20 28 74 68 69 | 73 2d 3e 52 65 63 6f 72 |s = (thi|s->Recor|
|00000950| 64 44 61 74 61 28 72 65 | 63 6f 72 64 49 6e 64 65 |dData(re|cordInde|
|00000960| 78 29 29 5b 6b 52 65 63 | 6f 72 64 49 44 46 6c 61 |x))[kRec|ordIDFla|
|00000970| 67 73 57 6f 72 64 5d 3b | 0d 09 6c 6f 6e 67 20 6e |gsWord];|..long n|
|00000980| 65 78 74 49 6e 64 65 78 | 20 3d 20 72 65 63 6f 72 |extIndex| = recor|
|00000990| 64 49 6e 64 65 78 3b 0d | 09 0d 09 2f 2f 0d 09 2f |dIndex;.|...//../|
|000009a0| 2f 20 49 66 20 74 68 65 | 20 64 61 74 61 20 72 65 |/ If the| data re|
|000009b0| 63 6f 72 64 20 69 6e 64 | 69 63 61 74 6f 72 20 62 |cord ind|icator b|
|000009c0| 69 74 73 20 21 3d 20 30 | 2c 20 74 68 65 6e 20 74 |its != 0|, then t|
|000009d0| 68 69 73 20 72 65 63 6f | 72 64 0d 09 2f 2f 20 69 |his reco|rd..// i|
|000009e0| 73 20 61 20 44 42 20 72 | 65 63 6f 72 64 3b 20 65 |s a DB r|ecord; e|
|000009f0| 76 65 72 79 20 44 42 20 | 72 65 63 6f 72 64 20 69 |very DB |record i|
|00000a00| 73 20 6f 6e 65 20 65 6e | 74 72 79 20 6c 6f 6e 67 |s one en|try long|
|00000a10| 2c 20 73 6f 0d 09 2f 2f | 20 74 68 65 69 72 20 73 |, so..//| their s|
|00000a20| 69 7a 65 20 69 73 20 61 | 6c 77 61 79 73 20 6b 4c |ize is a|lways kL|
|00000a30| 6f 6e 67 57 6f 72 64 73 | 50 65 72 52 65 63 6f 72 |ongWords|PerRecor|
|00000a40| 64 2e 0d 09 2f 2f 0d 09 | 69 66 28 28 66 6c 61 67 |d...//..|if((flag|
|00000a50| 73 20 26 20 6b 44 61 74 | 61 52 65 63 6f 72 64 49 |s & kDat|aRecordI|
|00000a60| 6e 64 69 63 61 74 6f 72 | 42 69 74 73 29 20 21 3d |ndicator|Bits) !=|
|00000a70| 20 30 29 0d 09 09 2b 2b | 6e 65 78 74 49 6e 64 65 | 0)...++|nextInde|
|00000a80| 78 3b 0d 09 2f 2f 0d 09 | 2f 2f 20 44 61 74 61 20 |x;..//..|// Data |
|00000a90| 72 65 63 6f 72 64 73 20 | 61 72 65 20 76 61 72 69 |records |are vari|
|00000aa0| 61 62 6c 65 20 73 69 7a | 65 2c 20 74 68 6f 75 67 |able siz|e, thoug|
|00000ab0| 68 2e 20 20 54 68 65 20 | 70 68 79 73 69 63 61 6c |h. The |physical|
|00000ac0| 0d 09 2f 2f 20 73 69 7a | 65 20 69 73 20 61 6c 77 |..// siz|e is alw|
|00000ad0| 61 79 73 20 73 6f 6d 65 | 20 6d 75 6c 74 69 70 6c |ays some| multipl|
|00000ae0| 65 20 6f 66 20 6b 4c 6f | 6e 67 57 6f 72 64 73 50 |e of kLo|ngWordsP|
|00000af0| 65 72 52 65 63 6f 72 64 | 2c 20 61 6e 64 0d 09 2f |erRecord|, and../|
|00000b00| 2f 20 69 73 20 65 6e 63 | 6f 64 65 64 20 69 6e 20 |/ is enc|oded in |
|00000b10| 74 68 65 20 6b 44 61 74 | 61 52 65 63 6f 72 64 50 |the kDat|aRecordP|
|00000b20| 68 79 73 69 63 61 6c 53 | 69 7a 65 42 69 74 73 2e |hysicalS|izeBits.|
|00000b30| 0d 09 2f 2f 0d 09 65 6c | 73 65 0d 09 7b 0d 09 09 |..//..el|se..{...|
|00000b40| 6e 65 78 74 49 6e 64 65 | 78 20 2b 3d 20 28 28 66 |nextInde|x += ((f|
|00000b50| 6c 61 67 73 20 26 20 6b | 44 61 74 61 52 65 63 6f |lags & k|DataReco|
|00000b60| 72 64 50 68 79 73 69 63 | 61 6c 53 69 7a 65 42 69 |rdPhysic|alSizeBi|
|00000b70| 74 73 29 20 3e 3e 20 28 | 6b 44 61 74 61 52 65 63 |ts) >> (|kDataRec|
|00000b80| 6f 72 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 53 |ordPhysi|calSizeS|
|00000b90| 68 69 66 74 29 29 20 2b | 20 31 3b 0d 09 7d 0d 09 |hift)) +| 1;..}..|
|00000ba0| 0d 09 2f 2f 0d 09 2f 2f | 20 49 66 20 77 65 20 67 |..//..//| If we g|
|00000bb0| 65 74 20 74 6f 20 74 68 | 65 20 65 6e 64 20 6f 66 |et to th|e end of|
|00000bc0| 20 74 68 65 20 67 72 6f | 75 70 2c 20 72 65 74 75 | the gro|up, retu|
|00000bd0| 72 6e 20 2d 31 0d 09 2f | 2f 0d 09 69 66 28 6e 65 |rn -1../|/..if(ne|
|00000be0| 78 74 49 6e 64 65 78 20 | 3e 3d 20 28 74 68 69 73 |xtIndex |>= (this|
|00000bf0| 2d 3e 46 69 72 73 74 52 | 65 63 6f 72 64 49 6e 64 |->FirstR|ecordInd|
|00000c00| 65 78 28 29 20 2b 20 6b | 52 65 63 6f 72 64 73 50 |ex() + k|RecordsP|
|00000c10| 65 72 47 72 6f 75 70 29 | 29 0d 09 7b 0d 09 09 41 |erGroup)|)..{...A|
|00000c20| 53 53 45 52 54 28 6e 65 | 78 74 49 6e 64 65 78 20 |SSERT(ne|xtIndex |
|00000c30| 3d 3d 20 74 68 69 73 2d | 3e 46 69 72 73 74 52 65 |== this-|>FirstRe|
|00000c40| 63 6f 72 64 49 6e 64 65 | 78 28 29 20 2b 20 6b 52 |cordInde|x() + kR|
|00000c50| 65 63 6f 72 64 73 50 65 | 72 47 72 6f 75 70 29 3b |ecordsPe|rGroup);|
|00000c60| 0d 09 09 6e 65 78 74 49 | 6e 64 65 78 20 3d 20 2d |...nextI|ndex = -|
|00000c70| 31 3b 0d 09 7d 0d 09 0d | 09 72 65 74 75 72 6e 20 |1;..}...|.return |
|00000c80| 6e 65 78 74 49 6e 64 65 | 78 3b 0d 7d 20 2f 2f 20 |nextInde|x;.} // |
|00000c90| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00000ca0| 65 63 74 3a 3a 4e 65 78 | 74 52 65 63 6f 72 64 49 |ect::Nex|tRecordI|
|00000cb0| 6e 64 65 78 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |ndex..//|--------|
|00000cc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d00| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00000d10| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00000d20| 3a 50 72 65 76 69 6f 75 | 73 52 65 63 6f 72 64 49 |:Previou|sRecordI|
|00000d30| 6e 64 65 78 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ndex.//-|--------|
|00000d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d80| 2d 2d 2d 2d 2d 2d 2d 0d | 6c 6f 6e 67 20 54 47 72 |-------.|long TGr|
|00000d90| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00000da0| 3a 3a 50 72 65 76 69 6f | 75 73 52 65 63 6f 72 64 |::Previo|usRecord|
|00000db0| 49 6e 64 65 78 28 6c 6f | 6e 67 20 72 65 63 6f 72 |Index(lo|ng recor|
|00000dc0| 64 49 6e 64 65 78 29 20 | 63 6f 6e 73 74 0d 7b 0d |dIndex) |const.{.|
|00000dd0| 09 6c 6f 6e 67 20 70 72 | 65 76 69 6f 75 73 49 6e |.long pr|eviousIn|
|00000de0| 64 65 78 20 3d 20 72 65 | 63 6f 72 64 49 6e 64 65 |dex = re|cordInde|
|00000df0| 78 3b 0d 0d 09 2f 2f 0d | 09 2f 2f 20 49 66 20 77 |x;...//.|.// If w|
|00000e00| 65 27 72 65 20 61 6c 72 | 65 61 64 79 20 61 74 20 |e're alr|eady at |
|00000e10| 74 68 65 20 62 65 67 69 | 6e 6e 69 6e 67 2c 20 74 |the begi|nning, t|
|00000e20| 68 65 72 65 27 73 20 6e | 6f 20 70 6f 69 6e 74 0d |here's n|o point.|
|00000e30| 09 2f 2f 20 69 6e 20 64 | 6f 69 6e 67 20 61 6e 79 |.// in d|oing any|
|00000e40| 20 66 75 72 74 68 65 72 | 20 63 61 6c 63 75 6c 61 | further| calcula|
|00000e50| 74 69 6f 6e 73 2e 0d 09 | 2f 2f 0d 09 69 66 28 72 |tions...|//..if(r|
|00000e60| 65 63 6f 72 64 49 6e 64 | 65 78 20 3c 3d 20 74 68 |ecordInd|ex <= th|
|00000e70| 69 73 2d 3e 46 69 72 73 | 74 52 65 63 6f 72 64 49 |is->Firs|tRecordI|
|00000e80| 6e 64 65 78 28 29 29 0d | 09 7b 0d 09 09 41 53 53 |ndex()).|.{...ASS|
|00000e90| 45 52 54 28 72 65 63 6f | 72 64 49 6e 64 65 78 20 |ERT(reco|rdIndex |
|00000ea0| 3d 3d 20 74 68 69 73 2d | 3e 46 69 72 73 74 52 65 |== this-|>FirstRe|
|00000eb0| 63 6f 72 64 49 6e 64 65 | 78 28 29 29 3b 0d 09 09 |cordInde|x());...|
|00000ec0| 70 72 65 76 69 6f 75 73 | 49 6e 64 65 78 20 3d 20 |previous|Index = |
|00000ed0| 2d 31 3b 0d 09 7d 0d 09 | 65 6c 73 65 0d 09 7b 0d |-1;..}..|else..{.|
|00000ee0| 09 09 6c 6f 6e 67 20 66 | 6c 61 67 73 20 3d 20 28 |..long f|lags = (|
|00000ef0| 74 68 69 73 2d 3e 52 65 | 63 6f 72 64 44 61 74 61 |this->Re|cordData|
|00000f00| 28 72 65 63 6f 72 64 49 | 6e 64 65 78 29 29 5b 6b |(recordI|ndex))[k|
|00000f10| 52 65 63 6f 72 64 49 44 | 46 6c 61 67 73 57 6f 72 |RecordID|FlagsWor|
|00000f20| 64 5d 3b 0d 09 09 0d 09 | 09 2f 2f 0d 09 09 2f 2f |d];.....|.//...//|
|00000f30| 20 49 66 20 74 68 65 20 | 64 61 74 61 20 72 65 63 | If the |data rec|
|00000f40| 6f 72 64 20 69 6e 64 69 | 63 61 74 6f 72 20 62 69 |ord indi|cator bi|
|00000f50| 74 73 20 21 3d 20 30 2c | 20 74 68 65 6e 20 74 68 |ts != 0,| then th|
|00000f60| 69 73 20 72 65 63 6f 72 | 64 0d 09 09 2f 2f 20 69 |is recor|d...// i|
|00000f70| 73 20 61 20 44 42 20 72 | 65 63 6f 72 64 3b 20 65 |s a DB r|ecord; e|
|00000f80| 76 65 72 79 20 44 42 20 | 72 65 63 6f 72 64 20 69 |very DB |record i|
|00000f90| 73 20 6f 6e 65 20 65 6e | 74 72 79 20 6c 6f 6e 67 |s one en|try long|
|00000fa0| 2c 20 73 6f 0d 09 09 2f | 2f 20 74 68 65 69 72 20 |, so.../|/ their |
|00000fb0| 73 69 7a 65 20 69 73 20 | 61 6c 77 61 79 73 20 6b |size is |always k|
|00000fc0| 4c 6f 6e 67 57 6f 72 64 | 73 50 65 72 52 65 63 6f |LongWord|sPerReco|
|00000fd0| 72 64 2e 0d 09 09 2f 2f | 0d 09 09 69 66 28 28 66 |rd....//|...if((f|
|00000fe0| 6c 61 67 73 20 26 20 6b | 44 61 74 61 52 65 63 6f |lags & k|DataReco|
|00000ff0| 72 64 49 6e 64 69 63 61 | 74 6f 72 42 69 74 73 29 |rdIndica|torBits)|
|00001000| 20 21 3d 20 30 29 0d 09 | 09 09 2d 2d 70 72 65 76 | != 0)..|..--prev|
|00001010| 69 6f 75 73 49 6e 64 65 | 78 3b 0d 09 09 2f 2f 0d |iousInde|x;...//.|
|00001020| 09 09 2f 2f 20 44 61 74 | 61 20 72 65 63 6f 72 64 |..// Dat|a record|
|00001030| 73 20 61 72 65 20 76 61 | 72 69 61 62 6c 65 20 73 |s are va|riable s|
|00001040| 69 7a 65 2c 20 74 68 6f | 75 67 68 2e 20 20 54 68 |ize, tho|ugh. Th|
|00001050| 65 20 70 68 79 73 69 63 | 61 6c 0d 09 09 2f 2f 20 |e physic|al...// |
|00001060| 73 69 7a 65 20 69 73 20 | 61 6c 77 61 79 73 20 73 |size is |always s|
|00001070| 6f 6d 65 20 6d 75 6c 74 | 69 70 6c 65 20 6f 66 20 |ome mult|iple of |
|00001080| 6b 4c 6f 6e 67 57 6f 72 | 64 73 50 65 72 52 65 63 |kLongWor|dsPerRec|
|00001090| 6f 72 64 2c 20 61 6e 64 | 0d 09 09 2f 2f 20 69 73 |ord, and|...// is|
|000010a0| 20 65 6e 63 6f 64 65 64 | 20 69 6e 20 74 68 65 20 | encoded| in the |
|000010b0| 6b 44 61 74 61 52 65 63 | 6f 72 64 50 68 79 73 69 |kDataRec|ordPhysi|
|000010c0| 63 61 6c 53 69 7a 65 42 | 69 74 73 2e 0d 09 09 2f |calSizeB|its..../|
|000010d0| 2f 0d 09 09 65 6c 73 65 | 0d 09 09 7b 0d 09 09 09 |/...else|...{....|
|000010e0| 70 72 65 76 69 6f 75 73 | 49 6e 64 65 78 20 2d 3d |previous|Index -=|
|000010f0| 20 28 28 28 66 6c 61 67 | 73 20 26 20 6b 50 72 65 | (((flag|s & kPre|
|00001100| 76 69 6f 75 73 52 65 63 | 6f 72 64 50 68 79 73 69 |viousRec|ordPhysi|
|00001110| 63 61 6c 53 69 7a 65 42 | 69 74 73 29 20 3e 3e 20 |calSizeB|its) >> |
|00001120| 28 6b 50 72 65 76 69 6f | 75 73 52 65 63 6f 72 64 |(kPrevio|usRecord|
|00001130| 50 68 79 73 69 63 61 6c | 53 69 7a 65 53 68 69 66 |Physical|SizeShif|
|00001140| 74 29 29 20 2b 20 31 29 | 3b 0d 09 09 7d 0d 0d 09 |t)) + 1)|;...}...|
|00001150| 09 41 53 53 45 52 54 28 | 70 72 65 76 69 6f 75 73 |.ASSERT(|previous|
|00001160| 49 6e 64 65 78 20 3e 3d | 20 74 68 69 73 2d 3e 46 |Index >=| this->F|
|00001170| 69 72 73 74 52 65 63 6f | 72 64 49 6e 64 65 78 28 |irstReco|rdIndex(|
|00001180| 29 29 3b 0d 09 7d 0d 09 | 0d 09 72 65 74 75 72 6e |));..}..|..return|
|00001190| 20 70 72 65 76 69 6f 75 | 73 49 6e 64 65 78 3b 0d | previou|sIndex;.|
|000011a0| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|000011b0| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 50 72 65 76 69 6f |olObject|::Previo|
|000011c0| 75 73 52 65 63 6f 72 64 | 49 6e 64 65 78 0d 0d 2f |usRecord|Index../|
|000011d0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000011e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000011f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001220| 2d 0d 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |-.// TGr|oupContr|
|00001230| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 42 6c 6f 63 6b 45 |olObject|::BlockE|
|00001240| 6e 63 6f 64 65 64 50 68 | 79 73 69 63 61 6c 53 69 |ncodedPh|ysicalSi|
|00001250| 7a 65 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ze.//---|--------|
|00001260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000012a0| 2d 2d 2d 2d 2d 0d 6c 6f | 6e 67 20 54 47 72 6f 75 |-----.lo|ng TGrou|
|000012b0| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|000012c0| 42 6c 6f 63 6b 45 6e 63 | 6f 64 65 64 50 68 79 73 |BlockEnc|odedPhys|
|000012d0| 69 63 61 6c 53 69 7a 65 | 28 6c 6f 6e 67 20 72 65 |icalSize|(long re|
|000012e0| 63 6f 72 64 49 6e 64 65 | 78 29 20 63 6f 6e 73 74 |cordInde|x) const|
|000012f0| 0d 7b 0d 09 6c 6f 6e 67 | 20 66 6c 61 67 73 20 3d |.{..long| flags =|
|00001300| 20 28 74 68 69 73 2d 3e | 52 65 63 6f 72 64 44 61 | (this->|RecordDa|
|00001310| 74 61 28 72 65 63 6f 72 | 64 49 6e 64 65 78 29 29 |ta(recor|dIndex))|
|00001320| 5b 6b 52 65 63 6f 72 64 | 49 44 46 6c 61 67 73 57 |[kRecord|IDFlagsW|
|00001330| 6f 72 64 5d 3b 0d 0d 09 | 69 66 28 28 66 6c 61 67 |ord];...|if((flag|
|00001340| 73 20 26 20 6b 44 61 74 | 61 52 65 63 6f 72 64 49 |s & kDat|aRecordI|
|00001350| 6e 64 69 63 61 74 6f 72 | 42 69 74 73 29 20 21 3d |ndicator|Bits) !=|
|00001360| 20 30 29 0d 09 09 72 65 | 74 75 72 6e 20 30 3b 0d | 0)...re|turn 0;.|
|00001370| 09 65 6c 73 65 0d 09 09 | 72 65 74 75 72 6e 20 28 |.else...|return (|
|00001380| 28 66 6c 61 67 73 20 26 | 20 6b 44 61 74 61 52 65 |(flags &| kDataRe|
|00001390| 63 6f 72 64 50 68 79 73 | 69 63 61 6c 53 69 7a 65 |cordPhys|icalSize|
|000013a0| 42 69 74 73 29 20 3e 3e | 20 28 6b 44 61 74 61 52 |Bits) >>| (kDataR|
|000013b0| 65 63 6f 72 64 50 68 79 | 73 69 63 61 6c 53 69 7a |ecordPhy|sicalSiz|
|000013c0| 65 53 68 69 66 74 29 29 | 3b 0d 7d 20 2f 2f 20 54 |eShift))|;.} // T|
|000013d0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|000013e0| 63 74 3a 3a 42 6c 6f 63 | 6b 45 6e 63 6f 64 65 64 |ct::Bloc|kEncoded|
|000013f0| 50 68 79 73 69 63 61 6c | 53 69 7a 65 0d 0d 2f 2f |Physical|Size..//|
|00001400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001420| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001430| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001440| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001450| 0d 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |.// TGro|upContro|
|00001460| 6c 4f 62 6a 65 63 74 3a | 3a 53 65 74 42 6c 6f 63 |lObject:|:SetBloc|
|00001470| 6b 45 6e 63 6f 64 65 64 | 50 68 79 73 69 63 61 6c |kEncoded|Physical|
|00001480| 53 69 7a 65 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |Size.//-|--------|
|00001490| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014d0| 2d 2d 2d 2d 2d 2d 2d 0d | 76 6f 69 64 20 54 47 72 |-------.|void TGr|
|000014e0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|000014f0| 3a 3a 53 65 74 42 6c 6f | 63 6b 45 6e 63 6f 64 65 |::SetBlo|ckEncode|
|00001500| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 28 6c 6f |dPhysica|lSize(lo|
|00001510| 6e 67 20 72 65 63 6f 72 | 64 49 6e 64 65 78 2c 20 |ng recor|dIndex, |
|00001520| 6c 6f 6e 67 20 6e 65 77 | 45 6e 63 6f 64 65 64 53 |long new|EncodedS|
|00001530| 69 7a 65 29 0d 7b 0d 09 | 6c 6f 6e 67 20 66 6c 61 |ize).{..|long fla|
|00001540| 67 73 20 3d 20 28 74 68 | 69 73 2d 3e 52 65 63 6f |gs = (th|is->Reco|
|00001550| 72 64 44 61 74 61 28 72 | 65 63 6f 72 64 49 6e 64 |rdData(r|ecordInd|
|00001560| 65 78 29 29 5b 6b 52 65 | 63 6f 72 64 49 44 46 6c |ex))[kRe|cordIDFl|
|00001570| 61 67 73 57 6f 72 64 5d | 3b 0d 0d 09 52 65 71 75 |agsWord]|;...Requ|
|00001580| 69 72 65 28 28 74 68 69 | 73 2d 3e 42 6c 6f 63 6b |ire((thi|s->Block|
|00001590| 45 6e 63 6f 64 65 64 50 | 68 79 73 69 63 61 6c 53 |EncodedP|hysicalS|
|000015a0| 69 7a 65 28 72 65 63 6f | 72 64 49 6e 64 65 78 29 |ize(reco|rdIndex)|
|000015b0| 20 3e 20 30 29 20 26 26 | 20 28 6e 65 77 45 6e 63 | > 0) &&| (newEnc|
|000015c0| 6f 64 65 64 53 69 7a 65 | 20 3e 20 30 29 29 3b 0d |odedSize| > 0));.|
|000015d0| 0d 09 6c 6f 6e 67 20 6e | 65 77 46 6c 61 67 73 20 |..long n|ewFlags |
|000015e0| 3d 20 28 66 6c 61 67 73 | 20 26 20 7e 6b 44 61 74 |= (flags| & ~kDat|
|000015f0| 61 52 65 63 6f 72 64 50 | 68 79 73 69 63 61 6c 53 |aRecordP|hysicalS|
|00001600| 69 7a 65 42 69 74 73 29 | 20 7c 20 28 28 6e 65 77 |izeBits)| | ((new|
|00001610| 45 6e 63 6f 64 65 64 53 | 69 7a 65 20 3c 3c 20 6b |EncodedS|ize << k|
|00001620| 44 61 74 61 52 65 63 6f | 72 64 50 68 79 73 69 63 |DataReco|rdPhysic|
|00001630| 61 6c 53 69 7a 65 53 68 | 69 66 74 29 20 26 20 6b |alSizeSh|ift) & k|
|00001640| 44 61 74 61 52 65 63 6f | 72 64 50 68 79 73 69 63 |DataReco|rdPhysic|
|00001650| 61 6c 53 69 7a 65 42 69 | 74 73 29 3b 0d 09 74 68 |alSizeBi|ts);..th|
|00001660| 69 73 2d 3e 57 72 69 74 | 65 52 65 63 6f 72 64 57 |is->Writ|eRecordW|
|00001670| 6f 72 64 28 72 65 63 6f | 72 64 49 6e 64 65 78 2c |ord(reco|rdIndex,|
|00001680| 20 6b 52 65 63 6f 72 64 | 49 44 46 6c 61 67 73 57 | kRecord|IDFlagsW|
|00001690| 6f 72 64 2c 20 6e 65 77 | 46 6c 61 67 73 29 3b 0d |ord, new|Flags);.|
|000016a0| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|000016b0| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 53 65 74 42 6c 6f |olObject|::SetBlo|
|000016c0| 63 6b 45 6e 63 6f 64 65 | 64 50 68 79 73 69 63 61 |ckEncode|dPhysica|
|000016d0| 6c 53 69 7a 65 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |lSize../|/-------|
|000016e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000016f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 47 72 |--------|-.// TGr|
|00001730| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00001740| 3a 3a 4c 6f 6e 67 77 6f | 72 64 73 49 6e 52 65 63 |::Longwo|rdsInRec|
|00001750| 6f 72 64 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ord.//--|--------|
|00001760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001770| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001780| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001790| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017a0| 2d 2d 2d 2d 2d 2d 0d 6c | 6f 6e 67 20 54 47 72 6f |------.l|ong TGro|
|000017b0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|000017c0| 3a 4c 6f 6e 67 77 6f 72 | 64 73 49 6e 52 65 63 6f |:Longwor|dsInReco|
|000017d0| 72 64 28 6c 6f 6e 67 20 | 72 65 63 6f 72 64 49 6e |rd(long |recordIn|
|000017e0| 64 65 78 29 20 63 6f 6e | 73 74 0d 7b 0d 09 72 65 |dex) con|st.{..re|
|000017f0| 74 75 72 6e 20 28 74 68 | 69 73 2d 3e 42 6c 6f 63 |turn (th|is->Bloc|
|00001800| 6b 45 6e 63 6f 64 65 64 | 50 68 79 73 69 63 61 6c |kEncoded|Physical|
|00001810| 53 69 7a 65 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |Size(rec|ordIndex|
|00001820| 29 20 3c 3c 20 6b 4c 6f | 6e 67 57 6f 72 64 73 50 |) << kLo|ngWordsP|
|00001830| 65 72 52 65 63 6f 72 64 | 53 68 69 66 74 29 20 2b |erRecord|Shift) +|
|00001840| 20 6b 4c 6f 6e 67 57 6f | 72 64 73 50 65 72 52 65 | kLongWo|rdsPerRe|
|00001850| 63 6f 72 64 3b 0d 7d 20 | 2f 2f 20 54 47 72 6f 75 |cord;.} |// TGrou|
|00001860| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|00001870| 4c 6f 6e 67 77 6f 72 64 | 73 49 6e 52 65 63 6f 72 |Longword|sInRecor|
|00001880| 64 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |d..//---|--------|
|00001890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018d0| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 47 72 6f 75 70 43 |-----.//| TGroupC|
|000018e0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 43 61 |ontrolOb|ject::Ca|
|000018f0| 63 68 65 43 72 65 61 74 | 65 64 43 75 72 73 6f 72 |cheCreat|edCursor|
|00001900| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00001910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001950| 2d 2d 2d 0d 76 6f 69 64 | 20 54 47 72 6f 75 70 43 |---.void| TGroupC|
|00001960| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 43 61 |ontrolOb|ject::Ca|
|00001970| 63 68 65 43 72 65 61 74 | 65 64 43 75 72 73 6f 72 |cheCreat|edCursor|
|00001980| 28 6c 6f 6e 67 20 72 65 | 63 6f 72 64 49 6e 64 65 |(long re|cordInde|
|00001990| 78 2c 20 54 41 62 73 74 | 72 61 63 74 52 65 63 6f |x, TAbst|ractReco|
|000019a0| 72 64 2a 20 63 75 72 73 | 6f 72 29 0d 7b 0d 09 52 |rd* curs|or).{..R|
|000019b0| 45 51 55 49 52 45 56 41 | 4c 49 44 50 4f 49 4e 54 |EQUIREVA|LIDPOINT|
|000019c0| 45 52 28 63 75 72 73 6f | 72 29 3b 0d 09 6c 6f 6e |ER(curso|r);..lon|
|000019d0| 67 20 72 65 6c 61 74 69 | 76 65 49 6e 64 65 78 20 |g relati|veIndex |
|000019e0| 3d 20 74 68 69 73 2d 3e | 43 61 6c 63 75 6c 61 74 |= this->|Calculat|
|000019f0| 65 52 65 6c 61 74 69 76 | 65 49 6e 64 65 78 28 72 |eRelativ|eIndex(r|
|00001a00| 65 63 6f 72 64 49 6e 64 | 65 78 29 3b 0d 09 69 66 |ecordInd|ex);..if|
|00001a10| 28 66 52 65 63 6f 72 64 | 43 75 72 73 6f 72 73 5b |(fRecord|Cursors[|
|00001a20| 72 65 6c 61 74 69 76 65 | 49 6e 64 65 78 5d 20 21 |relative|Index] !|
|00001a30| 3d 20 6e 69 6c 29 0d 09 | 7b 0d 09 09 69 66 28 66 |= nil)..|{...if(f|
|00001a40| 52 65 63 6f 72 64 43 75 | 72 73 6f 72 73 5b 72 65 |RecordCu|rsors[re|
|00001a50| 6c 61 74 69 76 65 49 6e | 64 65 78 5d 2d 3e 48 61 |lativeIn|dex]->Ha|
|00001a60| 73 52 65 66 65 72 65 6e | 63 65 28 29 20 3d 3d 20 |sReferen|ce() == |
|00001a70| 66 61 6c 73 65 29 0d 09 | 09 09 64 65 6c 65 74 65 |false)..|..delete|
|00001a80| 20 66 52 65 63 6f 72 64 | 43 75 72 73 6f 72 73 5b | fRecord|Cursors[|
|00001a90| 72 65 6c 61 74 69 76 65 | 49 6e 64 65 78 5d 3b 0d |relative|Index];.|
|00001aa0| 09 7d 0d 09 66 52 65 63 | 6f 72 64 43 75 72 73 6f |.}..fRec|ordCurso|
|00001ab0| 72 73 5b 72 65 6c 61 74 | 69 76 65 49 6e 64 65 78 |rs[relat|iveIndex|
|00001ac0| 5d 20 3d 20 63 75 72 73 | 6f 72 3b 0d 7d 20 2f 2f |] = curs|or;.} //|
|00001ad0| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00001ae0| 6a 65 63 74 3a 3a 43 61 | 63 68 65 43 72 65 61 74 |ject::Ca|cheCreat|
|00001af0| 65 64 43 75 72 73 6f 72 | 0d 0d 2f 2f 2d 2d 2d 2d |edCursor|..//----|
|00001b00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 2f 2f 20 |--------|----.// |
|00001b50| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00001b60| 65 63 74 3a 3a 4e 6f 74 | 69 66 79 43 75 72 73 6f |ect::Not|ifyCurso|
|00001b70| 72 52 65 6c 65 61 73 65 | 64 0d 2f 2f 2d 2d 2d 2d |rRelease|d.//----|
|00001b80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 76 6f 69 |--------|----.voi|
|00001bd0| 64 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |d TGroup|ControlO|
|00001be0| 62 6a 65 63 74 3a 3a 4e | 6f 74 69 66 79 43 75 72 |bject::N|otifyCur|
|00001bf0| 73 6f 72 52 65 6c 65 61 | 73 65 64 28 63 6f 6e 73 |sorRelea|sed(cons|
|00001c00| 74 20 54 41 62 73 74 72 | 61 63 74 52 65 63 6f 72 |t TAbstr|actRecor|
|00001c10| 64 2a 20 63 75 72 73 6f | 72 29 0d 7b 0d 09 52 45 |d* curso|r).{..RE|
|00001c20| 51 55 49 52 45 56 41 4c | 49 44 50 4f 49 4e 54 45 |QUIREVAL|IDPOINTE|
|00001c30| 52 28 63 75 72 73 6f 72 | 29 3b 0d 09 6c 6f 6e 67 |R(cursor|);..long|
|00001c40| 20 72 65 63 6f 72 64 49 | 6e 64 65 78 20 3d 20 63 | recordI|ndex = c|
|00001c50| 75 72 73 6f 72 2d 3e 52 | 65 63 6f 72 64 49 6e 64 |ursor->R|ecordInd|
|00001c60| 65 78 28 29 3b 0d 09 6c | 6f 6e 67 20 72 65 6c 61 |ex();..l|ong rela|
|00001c70| 74 69 76 65 49 6e 64 65 | 78 20 3d 20 74 68 69 73 |tiveInde|x = this|
|00001c80| 2d 3e 43 61 6c 63 75 6c | 61 74 65 52 65 6c 61 74 |->Calcul|ateRelat|
|00001c90| 69 76 65 49 6e 64 65 78 | 28 72 65 63 6f 72 64 49 |iveIndex|(recordI|
|00001ca0| 6e 64 65 78 29 3b 0d 09 | 0d 09 2f 2f 0d 09 2f 2f |ndex);..|..//..//|
|00001cb0| 20 54 68 65 20 66 69 72 | 73 74 20 63 61 73 65 20 | The fir|st case |
|00001cc0| 74 6f 20 77 6f 72 72 79 | 20 61 62 6f 75 74 20 69 |to worry| about i|
|00001cd0| 73 20 77 68 65 6e 20 61 | 20 6e 65 77 20 69 74 65 |s when a| new ite|
|00001ce0| 6d 20 69 73 20 63 72 65 | 61 74 65 64 2c 0d 09 2f |m is cre|ated,../|
|00001cf0| 2f 20 62 75 74 20 74 68 | 65 20 74 72 61 6e 73 61 |/ but th|e transa|
|00001d00| 63 74 69 6f 6e 20 69 73 | 20 62 61 63 6b 65 64 20 |ction is| backed |
|00001d10| 6f 75 74 20 62 65 66 6f | 72 65 20 74 68 65 20 6e |out befo|re the n|
|00001d20| 65 77 20 69 74 65 6d 20 | 62 65 63 6f 6d 65 73 0d |ew item |becomes.|
|00001d30| 09 2f 2f 20 61 20 70 61 | 72 74 20 6f 66 20 74 68 |.// a pa|rt of th|
|00001d40| 65 20 64 61 74 61 62 61 | 73 65 2e 20 20 49 6e 20 |e databa|se. In |
|00001d50| 74 68 61 74 20 65 76 65 | 6e 74 2c 20 77 65 20 61 |that eve|nt, we a|
|00001d60| 72 65 20 69 6e 20 64 61 | 6e 67 65 72 20 6f 66 0d |re in da|nger of.|
|00001d70| 09 2f 2f 20 63 61 63 68 | 69 6e 67 20 61 6e 20 6f |.// cach|ing an o|
|00001d80| 62 6a 65 63 74 20 74 68 | 61 74 20 72 65 70 72 65 |bject th|at repre|
|00001d90| 73 65 6e 74 73 20 61 20 | 66 72 65 65 20 6e 6f 64 |sents a |free nod|
|00001da0| 65 2d 2d 61 6e 64 20 74 | 68 65 20 6f 62 6a 65 63 |e--and t|he objec|
|00001db0| 74 0d 09 2f 2f 20 6d 61 | 79 20 68 61 76 65 20 74 |t..// ma|y have t|
|00001dc0| 68 65 20 77 72 6f 6e 67 | 20 63 6c 61 73 73 20 74 |he wrong| class t|
|00001dd0| 68 65 20 6e 65 78 74 20 | 74 69 6d 65 20 69 74 27 |he next |time it'|
|00001de0| 73 20 72 65 66 65 72 65 | 6e 63 65 64 2e 20 20 54 |s refere|nced. T|
|00001df0| 6f 20 61 76 6f 69 64 0d | 09 2f 2f 20 74 68 69 73 |o avoid.|.// this|
|00001e00| 20 70 72 6f 62 6c 65 6d | 2c 20 77 65 20 64 65 6c | problem|, we del|
|00001e10| 65 74 65 20 66 72 65 65 | 20 6e 6f 64 65 73 20 61 |ete free| nodes a|
|00001e20| 73 20 73 6f 6f 6e 20 61 | 73 20 74 68 65 69 72 20 |s soon a|s their |
|00001e30| 72 65 66 65 72 65 6e 63 | 65 73 0d 09 2f 2f 20 67 |referenc|es..// g|
|00001e40| 6f 20 61 77 61 79 2e 0d | 09 2f 2f 0d 09 69 66 28 |o away..|.//..if(|
|00001e50| 66 52 65 63 6f 72 64 43 | 75 72 73 6f 72 73 5b 72 |fRecordC|ursors[r|
|00001e60| 65 6c 61 74 69 76 65 49 | 6e 64 65 78 5d 20 3d 3d |elativeI|ndex] ==|
|00001e70| 20 63 75 72 73 6f 72 29 | 0d 09 7b 0d 09 09 2f 2f | cursor)|..{...//|
|00001e80| 0d 09 09 2f 2f 20 0d 09 | 09 2f 2f 0d 09 09 69 66 |...// ..|.//...if|
|00001e90| 28 63 75 72 73 6f 72 2d | 3e 54 68 69 73 52 65 63 |(cursor-|>ThisRec|
|00001ea0| 6f 72 64 49 73 46 72 65 | 65 28 6e 69 6c 29 20 26 |ordIsFre|e(nil) &|
|00001eb0| 26 20 28 63 75 72 73 6f | 72 2d 3e 49 6e 54 72 61 |& (curso|r->InTra|
|00001ec0| 6e 73 61 63 74 69 6f 6e | 28 29 20 3d 3d 20 66 61 |nsaction|() == fa|
|00001ed0| 6c 73 65 29 29 0d 09 09 | 7b 0d 09 09 09 66 52 65 |lse))...|{....fRe|
|00001ee0| 63 6f 72 64 43 75 72 73 | 6f 72 73 5b 72 65 6c 61 |cordCurs|ors[rela|
|00001ef0| 74 69 76 65 49 6e 64 65 | 78 5d 20 3d 20 6e 69 6c |tiveInde|x] = nil|
|00001f00| 3b 0d 09 09 09 64 65 6c | 65 74 65 20 28 54 41 62 |;....del|ete (TAb|
|00001f10| 73 74 72 61 63 74 52 65 | 63 6f 72 64 2a 29 63 75 |stractRe|cord*)cu|
|00001f20| 72 73 6f 72 3b 0d 09 09 | 7d 0d 09 7d 0d 09 2f 2f |rsor;...|}..}..//|
|00001f30| 0d 09 2f 2f 20 54 68 65 | 20 6f 74 68 65 72 20 63 |..// The| other c|
|00001f40| 61 73 65 20 74 6f 20 77 | 6f 72 72 79 20 61 62 6f |ase to w|orry abo|
|00001f50| 75 74 20 69 74 20 77 68 | 65 6e 20 61 6e 20 69 74 |ut it wh|en an it|
|00001f60| 65 6d 20 69 73 20 66 72 | 65 65 64 2c 0d 09 2f 2f |em is fr|eed,..//|
|00001f70| 20 73 6f 6d 65 6f 6e 65 | 20 65 6c 73 65 20 6d 61 | someone| else ma|
|00001f80| 79 20 63 6f 6d 65 20 61 | 6c 6f 6e 67 20 61 6e 64 |y come a|long and|
|00001f90| 20 61 6c 6c 6f 63 61 74 | 65 20 61 20 6e 65 77 20 | allocat|e a new |
|00001fa0| 72 65 63 6f 72 64 0d 09 | 2f 2f 20 6f 6e 20 74 6f |record..|// on to|
|00001fb0| 70 20 6f 66 20 69 74 20 | 62 65 66 6f 72 65 20 61 |p of it |before a|
|00001fc0| 6c 6c 20 6f 66 20 74 68 | 65 20 6f 6c 64 20 72 65 |ll of th|e old re|
|00001fd0| 66 65 72 65 6e 63 65 73 | 20 67 6f 20 61 77 61 79 |ferences| go away|
|00001fe0| 2e 0d 09 2f 2f 20 49 6e | 20 74 68 61 74 20 63 61 |...// In| that ca|
|00001ff0| 73 65 2c 20 74 68 65 20 | 63 75 72 73 6f 72 20 77 |se, the |cursor w|
|00002000| 6f 6e 27 74 20 62 65 20 | 63 61 63 68 65 64 20 69 |on't be |cached i|
|00002010| 6e 20 74 68 65 20 72 65 | 63 6f 72 64 0d 09 2f 2f |n the re|cord..//|
|00002020| 20 63 75 72 73 6f 72 73 | 20 63 61 63 68 65 20 74 | cursors| cache t|
|00002030| 61 62 6c 65 20 61 6e 79 | 20 6d 6f 72 65 2c 20 61 |able any| more, a|
|00002040| 6e 64 20 77 65 20 77 69 | 6c 6c 20 77 61 69 74 20 |nd we wi|ll wait |
|00002050| 66 6f 72 0d 09 2f 2f 20 | 74 68 65 20 72 65 66 65 |for..// |the refe|
|00002060| 72 65 6e 63 65 73 20 74 | 6f 20 67 6f 20 61 77 61 |rences t|o go awa|
|00002070| 79 20 62 65 66 6f 72 65 | 20 77 65 20 64 65 6c 65 |y before| we dele|
|00002080| 74 65 20 74 68 65 20 69 | 74 65 6d 2e 0d 09 2f 2f |te the i|tem...//|
|00002090| 0d 09 65 6c 73 65 0d 09 | 7b 0d 09 09 64 65 6c 65 |..else..|{...dele|
|000020a0| 74 65 20 28 54 41 62 73 | 74 72 61 63 74 52 65 63 |te (TAbs|tractRec|
|000020b0| 6f 72 64 2a 29 63 75 72 | 73 6f 72 3b 0d 09 7d 0d |ord*)cur|sor;..}.|
|000020c0| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|000020d0| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 4e 6f 74 69 66 79 |olObject|::Notify|
|000020e0| 43 75 72 73 6f 72 52 65 | 6c 65 61 73 65 64 0d 0d |CursorRe|leased..|
|000020f0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00002100| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002110| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002120| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002140| 2d 2d 0d 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |--.// TG|roupCont|
|00002150| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 47 65 74 52 65 |rolObjec|t::GetRe|
|00002160| 63 6f 72 64 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |cord.//-|--------|
|00002170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021b0| 2d 2d 2d 2d 2d 2d 2d 0d | 54 41 62 73 74 72 61 63 |-------.|TAbstrac|
|000021c0| 74 52 65 63 6f 72 64 2a | 20 54 47 72 6f 75 70 43 |tRecord*| TGroupC|
|000021d0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 47 65 |ontrolOb|ject::Ge|
|000021e0| 74 52 65 63 6f 72 64 28 | 6c 6f 6e 67 20 72 65 63 |tRecord(|long rec|
|000021f0| 6f 72 64 49 6e 64 65 78 | 29 0d 7b 0d 09 6c 6f 6e |ordIndex|).{..lon|
|00002200| 67 20 72 65 6c 61 74 69 | 76 65 49 6e 64 65 78 20 |g relati|veIndex |
|00002210| 3d 20 74 68 69 73 2d 3e | 43 61 6c 63 75 6c 61 74 |= this->|Calculat|
|00002220| 65 52 65 6c 61 74 69 76 | 65 49 6e 64 65 78 28 72 |eRelativ|eIndex(r|
|00002230| 65 63 6f 72 64 49 6e 64 | 65 78 29 3b 0d 09 54 41 |ecordInd|ex);..TA|
|00002240| 62 73 74 72 61 63 74 52 | 65 63 6f 72 64 2a 20 63 |bstractR|ecord* c|
|00002250| 75 72 73 6f 72 20 3d 20 | 6e 69 6c 3b 0d 09 0d 09 |ursor = |nil;....|
|00002260| 2f 2f 0d 09 2f 2f 20 4c | 6f 6f 6b 20 75 70 20 74 |//..// L|ook up t|
|00002270| 68 65 20 63 75 72 73 6f | 72 20 69 6e 20 74 68 65 |he curso|r in the|
|00002280| 20 74 61 62 6c 65 20 6f | 66 20 63 61 63 68 65 64 | table o|f cached|
|00002290| 20 70 6f 69 6e 74 65 72 | 73 20 74 68 61 74 20 77 | pointer|s that w|
|000022a0| 65 20 6b 65 65 70 2e 0d | 09 2f 2f 20 49 66 20 74 |e keep..|.// If t|
|000022b0| 68 65 20 63 75 72 73 6f | 72 20 64 6f 65 73 6e 27 |he curso|r doesn'|
|000022c0| 74 20 65 78 69 73 74 20 | 79 65 74 2c 20 74 68 65 |t exist |yet, the|
|000022d0| 6e 20 61 73 6b 20 74 68 | 65 20 64 6f 63 75 6d 65 |n ask th|e docume|
|000022e0| 6e 74 20 74 6f 20 63 72 | 65 61 74 65 20 69 74 2e |nt to cr|eate it.|
|000022f0| 0d 09 2f 2f 0d 09 63 75 | 72 73 6f 72 20 3d 20 66 |..//..cu|rsor = f|
|00002300| 52 65 63 6f 72 64 43 75 | 72 73 6f 72 73 5b 72 65 |RecordCu|rsors[re|
|00002310| 6c 61 74 69 76 65 49 6e | 64 65 78 5d 3b 0d 09 69 |lativeIn|dex];..i|
|00002320| 66 28 63 75 72 73 6f 72 | 20 3d 3d 20 6e 69 6c 29 |f(cursor| == nil)|
|00002330| 0d 09 7b 0d 09 09 2f 2f | 0d 09 09 2f 2f 20 6e 2e |..{...//|...// n.|
|00002340| 62 2e 20 4d 61 6b 65 52 | 65 63 6f 72 64 20 69 73 |b. MakeR|ecord is|
|00002350| 20 67 6f 69 6e 67 20 74 | 6f 20 66 69 6c 6c 20 69 | going t|o fill i|
|00002360| 6e 20 74 68 65 0d 09 09 | 2f 2f 20 61 70 72 6f 70 |n the...|// aprop|
|00002370| 72 69 61 74 65 20 65 6e | 74 72 79 20 69 6e 20 66 |riate en|try in f|
|00002380| 52 65 63 6f 72 64 43 75 | 72 73 6f 72 73 2e 0d 09 |RecordCu|rsors...|
|00002390| 09 2f 2f 0d 09 09 63 75 | 72 73 6f 72 20 3d 20 44 |.//...cu|rsor = D|
|000023a0| 42 44 6f 63 75 6d 65 6e | 74 28 29 2d 3e 4d 61 6b |BDocumen|t()->Mak|
|000023b0| 65 52 65 63 6f 72 64 28 | 72 65 63 6f 72 64 49 6e |eRecord(|recordIn|
|000023c0| 64 65 78 2c 20 74 68 69 | 73 2d 3e 47 65 74 52 65 |dex, thi|s->GetRe|
|000023d0| 63 6f 72 64 57 6f 72 64 | 28 72 65 63 6f 72 64 49 |cordWord|(recordI|
|000023e0| 6e 64 65 78 2c 20 30 29 | 29 3b 0d 09 7d 0d 09 09 |ndex, 0)|);..}...|
|000023f0| 0d 09 72 65 74 75 72 6e | 20 63 75 72 73 6f 72 3b |..return| cursor;|
|00002400| 0d 7d 20 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.} // TG|roupCont|
|00002410| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 47 65 74 52 65 |rolObjec|t::GetRe|
|00002420| 63 6f 72 64 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |cord..//|--------|
|00002430| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002440| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002460| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002470| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00002480| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00002490| 3a 52 65 63 6f 72 64 44 | 61 74 61 0d 2f 2f 2d 2d |:RecordD|ata.//--|
|000024a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 6c |--------|------.l|
|000024f0| 6f 6e 67 2a 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |ong* TGr|oupContr|
|00002500| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 52 65 63 6f 72 64 |olObject|::Record|
|00002510| 44 61 74 61 28 6c 6f 6e | 67 20 72 65 63 6f 72 64 |Data(lon|g record|
|00002520| 49 6e 64 65 78 29 20 63 | 6f 6e 73 74 0d 7b 0d 09 |Index) c|onst.{..|
|00002530| 6c 6f 6e 67 20 72 65 6c | 61 74 69 76 65 49 6e 64 |long rel|ativeInd|
|00002540| 65 78 20 3d 20 74 68 69 | 73 2d 3e 43 61 6c 63 75 |ex = thi|s->Calcu|
|00002550| 6c 61 74 65 52 65 6c 61 | 74 69 76 65 49 6e 64 65 |lateRela|tiveInde|
|00002560| 78 28 72 65 63 6f 72 64 | 49 6e 64 65 78 29 3b 0d |x(record|Index);.|
|00002570| 09 0d 09 69 66 28 66 52 | 65 63 6f 72 64 44 61 74 |...if(fR|ecordDat|
|00002580| 61 20 3d 3d 20 6e 69 6c | 29 0d 09 7b 0d 09 09 2f |a == nil|)..{.../|
|00002590| 2f 0d 09 09 2f 2f 20 43 | 6f 6e 73 74 20 63 61 73 |/...// C|onst cas|
|000025a0| 74 20 61 77 61 79 20 64 | 65 6c 69 62 65 72 61 74 |t away d|eliberat|
|000025b0| 65 6c 79 3b 20 77 65 20 | 77 61 6e 74 20 74 6f 20 |ely; we |want to |
|000025c0| 70 72 6f 76 69 64 65 20 | 61 6e 0d 09 09 2f 2f 20 |provide |an...// |
|000025d0| 69 6e 74 65 72 66 61 63 | 65 20 77 68 65 72 65 20 |interfac|e where |
|000025e0| 27 52 65 63 6f 72 64 44 | 61 74 61 27 20 63 6c 61 |'RecordD|ata' cla|
|000025f0| 69 6d 73 20 74 6f 20 62 | 65 20 63 6f 6e 73 74 2c |ims to b|e const,|
|00002600| 20 62 75 74 0d 09 09 2f | 2f 20 69 74 20 6d 61 79 | but.../|/ it may|
|00002610| 20 6e 65 65 64 20 74 6f | 20 63 61 6c 6c 20 27 52 | need to| call 'R|
|00002620| 65 61 64 52 65 63 6f 72 | 64 47 72 6f 75 70 46 72 |eadRecor|dGroupFr|
|00002630| 6f 6d 44 69 73 6b 27 2c | 20 77 68 69 63 68 0d 09 |omDisk',| which..|
|00002640| 09 2f 2f 20 69 73 20 6e | 6f 74 20 63 6f 6e 73 74 |.// is n|ot const|
|00002650| 2e 0d 09 09 2f 2f 0d 09 | 09 54 47 72 6f 75 70 43 |....//..|.TGroupC|
|00002660| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 2a 20 6d 65 |ontrolOb|ject* me|
|00002670| 20 3d 20 28 54 47 72 6f | 75 70 43 6f 6e 74 72 6f | = (TGro|upContro|
|00002680| 6c 4f 62 6a 65 63 74 2a | 29 74 68 69 73 3b 0d 09 |lObject*|)this;..|
|00002690| 09 6d 65 2d 3e 52 65 61 | 64 52 65 63 6f 72 64 47 |.me->Rea|dRecordG|
|000026a0| 72 6f 75 70 46 72 6f 6d | 44 69 73 6b 28 29 3b 0d |roupFrom|Disk();.|
|000026b0| 09 7d 0d 09 0d 09 72 65 | 74 75 72 6e 20 28 66 52 |.}....re|turn (fR|
|000026c0| 65 63 6f 72 64 44 61 74 | 61 29 20 2b 20 28 72 65 |ecordDat|a) + (re|
|000026d0| 6c 61 74 69 76 65 49 6e | 64 65 78 20 2a 20 6b 4c |lativeIn|dex * kL|
|000026e0| 6f 6e 67 57 6f 72 64 73 | 50 65 72 52 65 63 6f 72 |ongWords|PerRecor|
|000026f0| 64 29 3b 0d 7d 20 2f 2f | 20 54 47 72 6f 75 70 43 |d);.} //| TGroupC|
|00002700| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 52 65 |ontrolOb|ject::Re|
|00002710| 63 6f 72 64 44 61 74 61 | 0d 09 20 0d 2f 2f 2d 2d |cordData|.. .//--|
|00002720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|00002770| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|00002780| 62 6a 65 63 74 3a 3a 47 | 65 74 52 65 63 6f 72 64 |bject::G|etRecord|
|00002790| 57 6f 72 64 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |Word.//-|--------|
|000027a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027e0| 2d 2d 2d 2d 2d 2d 2d 0d | 6c 6f 6e 67 20 54 47 72 |-------.|long TGr|
|000027f0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00002800| 3a 3a 47 65 74 52 65 63 | 6f 72 64 57 6f 72 64 28 |::GetRec|ordWord(|
|00002810| 6c 6f 6e 67 20 72 65 63 | 6f 72 64 49 6e 64 65 78 |long rec|ordIndex|
|00002820| 2c 20 6c 6f 6e 67 20 6c | 6f 6e 67 77 6f 72 64 4e |, long l|ongwordN|
|00002830| 75 6d 62 65 72 29 20 63 | 6f 6e 73 74 0d 7b 0d 09 |umber) c|onst.{..|
|00002840| 6c 6f 6e 67 20 74 68 65 | 44 61 74 61 20 3d 20 30 |long the|Data = 0|
|00002850| 3b 0d 09 0d 09 69 66 28 | 28 6c 6f 6e 67 77 6f 72 |;....if(|(longwor|
|00002860| 64 4e 75 6d 62 65 72 20 | 3e 3d 20 30 29 20 26 26 |dNumber |>= 0) &&|
|00002870| 20 28 6c 6f 6e 67 77 6f | 72 64 4e 75 6d 62 65 72 | (longwo|rdNumber|
|00002880| 20 3c 20 74 68 69 73 2d | 3e 4c 6f 6e 67 77 6f 72 | < this-|>Longwor|
|00002890| 64 73 49 6e 52 65 63 6f | 72 64 28 72 65 63 6f 72 |dsInReco|rd(recor|
|000028a0| 64 49 6e 64 65 78 29 29 | 29 0d 09 7b 0d 09 09 74 |dIndex))|)..{...t|
|000028b0| 68 65 44 61 74 61 20 3d | 20 28 74 68 69 73 2d 3e |heData =| (this->|
|000028c0| 52 65 63 6f 72 64 44 61 | 74 61 28 72 65 63 6f 72 |RecordDa|ta(recor|
|000028d0| 64 49 6e 64 65 78 29 29 | 5b 6c 6f 6e 67 77 6f 72 |dIndex))|[longwor|
|000028e0| 64 4e 75 6d 62 65 72 5d | 3b 0d 09 7d 0d 09 65 6c |dNumber]|;..}..el|
|000028f0| 73 65 0d 09 09 54 68 72 | 6f 77 28 65 49 6e 64 65 |se...Thr|ow(eInde|
|00002900| 78 4f 75 74 4f 66 52 61 | 6e 67 65 29 3b 0d 09 0d |xOutOfRa|nge);...|
|00002910| 09 72 65 74 75 72 6e 20 | 74 68 65 44 61 74 61 3b |.return |theData;|
|00002920| 0d 7d 20 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.} // TG|roupCont|
|00002930| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 47 65 74 52 65 |rolObjec|t::GetRe|
|00002940| 63 6f 72 64 57 6f 72 64 | 0d 09 20 0d 2f 2f 2d 2d |cordWord|.. .//--|
|00002950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|000029a0| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|000029b0| 62 6a 65 63 74 3a 3a 57 | 72 69 74 65 52 65 63 6f |bject::W|riteReco|
|000029c0| 72 64 57 6f 72 64 0d 2f | 2f 0d 2f 2f 20 54 68 69 |rdWord./|/.// Thi|
|000029d0| 73 20 69 73 20 61 20 70 | 72 69 76 61 74 65 20 6d |s is a p|rivate m|
|000029e0| 65 74 68 6f 64 20 6e 6f | 74 20 74 6f 20 62 65 20 |ethod no|t to be |
|000029f0| 63 61 6c 6c 65 64 20 62 | 79 20 61 6e 79 20 6f 66 |called b|y any of|
|00002a00| 20 74 68 65 20 67 72 6f | 75 70 20 63 6f 6e 74 72 | the gro|up contr|
|00002a10| 6f 6c 20 6f 62 6a 65 63 | 74 27 73 0d 2f 2f 20 66 |ol objec|t's.// f|
|00002a20| 72 69 65 6e 64 73 2e 20 | 20 41 6e 79 20 65 78 74 |riends. | Any ext|
|00002a30| 65 72 6e 61 6c 20 63 6c | 69 65 6e 74 20 6f 66 20 |ernal cl|ient of |
|00002a40| 74 68 65 20 67 72 6f 75 | 70 20 63 6f 6e 74 72 6f |the grou|p contro|
|00002a50| 6c 20 6f 62 6a 65 63 74 | 20 74 68 61 74 20 77 69 |l object| that wi|
|00002a60| 73 68 65 73 20 74 6f 20 | 63 68 61 6e 67 65 0d 2f |shes to |change./|
|00002a70| 2f 20 74 68 65 20 63 6f | 6e 74 65 6e 74 73 20 6f |/ the co|ntents o|
|00002a80| 66 20 61 20 72 65 63 6f | 72 64 20 6d 75 73 74 20 |f a reco|rd must |
|00002a90| 6d 61 6b 65 20 61 20 63 | 6f 70 79 20 6f 66 20 74 |make a c|opy of t|
|00002aa0| 68 65 20 72 65 63 6f 72 | 64 20 77 69 74 68 0d 2f |he recor|d with./|
|00002ab0| 2f 20 27 4d 61 6b 65 52 | 65 63 6f 72 64 44 61 74 |/ 'MakeR|ecordDat|
|00002ac0| 61 43 6f 70 79 27 2c 20 | 74 68 65 6e 20 77 72 69 |aCopy', |then wri|
|00002ad0| 74 65 20 74 68 65 20 65 | 6e 74 69 72 65 20 72 65 |te the e|ntire re|
|00002ae0| 63 6f 72 64 20 62 61 63 | 6b 20 77 69 74 68 20 27 |cord bac|k with '|
|00002af0| 43 68 61 6e 67 65 52 65 | 63 6f 72 64 44 61 74 61 |ChangeRe|cordData|
|00002b00| 27 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |'.//----|--------|
|00002b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b50| 2d 2d 2d 2d 0d 76 6f 69 | 64 20 54 47 72 6f 75 70 |----.voi|d TGroup|
|00002b60| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 57 |ControlO|bject::W|
|00002b70| 72 69 74 65 52 65 63 6f | 72 64 57 6f 72 64 28 6c |riteReco|rdWord(l|
|00002b80| 6f 6e 67 20 72 65 63 6f | 72 64 49 6e 64 65 78 2c |ong reco|rdIndex,|
|00002b90| 20 6c 6f 6e 67 20 6c 6f | 6e 67 77 6f 72 64 4e 75 | long lo|ngwordNu|
|00002ba0| 6d 62 65 72 2c 20 6c 6f | 6e 67 20 74 68 65 44 61 |mber, lo|ng theDa|
|00002bb0| 74 61 29 0d 7b 09 0d 09 | 69 66 28 28 6c 6f 6e 67 |ta).{...|if((long|
|00002bc0| 77 6f 72 64 4e 75 6d 62 | 65 72 20 3e 3d 20 30 29 |wordNumb|er >= 0)|
|00002bd0| 20 26 26 20 28 6c 6f 6e | 67 77 6f 72 64 4e 75 6d | && (lon|gwordNum|
|00002be0| 62 65 72 20 3c 20 74 68 | 69 73 2d 3e 4c 6f 6e 67 |ber < th|is->Long|
|00002bf0| 77 6f 72 64 73 49 6e 52 | 65 63 6f 72 64 28 72 65 |wordsInR|ecord(re|
|00002c00| 63 6f 72 64 49 6e 64 65 | 78 29 29 29 0d 09 7b 0d |cordInde|x)))..{.|
|00002c10| 09 09 28 74 68 69 73 2d | 3e 52 65 63 6f 72 64 44 |..(this-|>RecordD|
|00002c20| 61 74 61 28 72 65 63 6f | 72 64 49 6e 64 65 78 29 |ata(reco|rdIndex)|
|00002c30| 29 5b 6c 6f 6e 67 77 6f | 72 64 4e 75 6d 62 65 72 |)[longwo|rdNumber|
|00002c40| 5d 20 3d 20 74 68 65 44 | 61 74 61 3b 0d 09 09 66 |] = theD|ata;...f|
|00002c50| 52 65 63 6f 72 64 47 72 | 6f 75 70 48 61 73 43 68 |RecordGr|oupHasCh|
|00002c60| 61 6e 67 65 64 20 3d 20 | 74 72 75 65 3b 0d 09 7d |anged = |true;..}|
|00002c70| 0d 09 65 6c 73 65 0d 09 | 09 54 68 72 6f 77 28 65 |..else..|.Throw(e|
|00002c80| 49 6e 64 65 78 4f 75 74 | 4f 66 52 61 6e 67 65 29 |IndexOut|OfRange)|
|00002c90| 3b 0d 7d 20 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |;.} // T|GroupCon|
|00002ca0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 57 72 69 74 |trolObje|ct::Writ|
|00002cb0| 65 52 65 63 6f 72 64 57 | 6f 72 64 0d 0d 2f 2f 2d |eRecordW|ord..//-|
|00002cc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00002d10| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|00002d20| 4f 62 6a 65 63 74 3a 3a | 57 72 69 74 65 54 68 72 |Object::|WriteThr|
|00002d30| 6f 75 67 68 54 6f 54 72 | 61 6e 73 61 63 74 69 6f |oughToTr|ansactio|
|00002d40| 6e 0d 2f 2f 0d 2f 2f 20 | 54 68 69 73 20 72 6f 75 |n.//.// |This rou|
|00002d50| 74 69 6e 65 20 63 68 61 | 6e 67 65 73 20 62 69 74 |tine cha|nges bit|
|00002d60| 73 20 69 6e 20 61 20 64 | 61 74 61 20 72 65 63 6f |s in a d|ata reco|
|00002d70| 72 64 20 62 6f 74 68 20 | 69 6e 20 74 68 65 20 70 |rd both |in the p|
|00002d80| 65 72 73 69 73 74 61 6e | 74 20 28 67 72 6f 75 70 |ersistan|t (group|
|00002d90| 0d 2f 2f 20 63 6f 6e 74 | 72 6f 6c 20 6f 62 6a 65 |.// cont|rol obje|
|00002da0| 63 74 20 73 74 6f 72 65 | 64 29 20 73 74 72 75 63 |ct store|d) struc|
|00002db0| 74 75 72 65 20 61 6e 64 | 20 74 68 65 20 63 68 61 |ture and| the cha|
|00002dc0| 6e 67 65 20 69 6d 61 67 | 65 20 28 73 74 6f 72 65 |nge imag|e (store|
|00002dd0| 64 20 69 6e 20 74 68 65 | 20 75 70 64 61 74 65 0d |d in the| update.|
|00002de0| 2f 2f 20 70 6f 69 6e 74 | 65 72 20 6f 66 20 73 6f |// point|er of so|
|00002df0| 6d 65 20 74 72 61 6e 73 | 61 63 74 69 6f 6e 29 2e |me trans|action).|
|00002e00| 20 20 54 68 69 73 20 69 | 73 20 63 75 72 72 65 6e | This i|s curren|
|00002e10| 74 6c 79 20 6f 6e 6c 79 | 20 6e 65 63 65 73 73 61 |tly only| necessa|
|00002e20| 72 79 20 69 6e 20 6f 6e | 65 0d 2f 2f 20 69 6e 73 |ry in on|e.// ins|
|00002e30| 74 61 6e 63 65 3a 20 73 | 65 74 74 69 6e 67 20 74 |tance: s|etting t|
|00002e40| 68 65 20 27 70 72 65 76 | 69 6f 75 73 20 62 6c 6f |he 'prev|ious blo|
|00002e50| 63 6b 27 73 20 70 68 79 | 73 69 63 61 6c 20 73 69 |ck's phy|sical si|
|00002e60| 7a 65 27 20 66 69 65 6c | 64 20 6f 66 20 61 20 64 |ze' fiel|d of a d|
|00002e70| 61 74 61 0d 2f 2f 20 6f | 62 6a 65 63 74 20 77 68 |ata.// o|bject wh|
|00002e80| 65 6e 20 73 70 6c 69 74 | 74 69 6e 67 20 61 20 62 |en split|ting a b|
|00002e90| 6c 6f 63 6b 20 61 70 61 | 72 74 20 6f 72 20 6a 6f |lock apa|rt or jo|
|00002ea0| 69 6e 69 6e 67 20 74 77 | 6f 20 62 6c 6f 63 6b 73 |ining tw|o blocks|
|00002eb0| 2e 20 20 54 68 65 20 73 | 70 6c 69 74 20 69 73 0d |. The s|plit is.|
|00002ec0| 2f 2f 20 64 6f 6e 65 20 | 69 6e 64 65 70 65 6e 64 |// done |independ|
|00002ed0| 61 6e 74 6c 79 20 6f 66 | 20 74 68 69 73 20 74 72 |antly of| this tr|
|00002ee0| 61 6e 73 61 63 74 69 6f | 6e 2c 20 73 6f 20 77 65 |ansactio|n, so we|
|00002ef0| 20 6e 65 65 64 20 74 6f | 20 6d 61 6b 65 20 73 75 | need to| make su|
|00002f00| 72 65 20 74 68 61 74 20 | 74 68 65 0d 2f 2f 20 61 |re that |the.// a|
|00002f10| 70 70 72 6f 70 72 69 61 | 74 65 20 62 69 74 73 20 |ppropria|te bits |
|00002f20| 61 72 65 20 63 68 61 6e | 67 65 64 20 69 6e 20 62 |are chan|ged in b|
|00002f30| 6f 74 68 20 70 6c 61 63 | 65 73 20 73 6f 20 74 68 |oth plac|es so th|
|00002f40| 61 74 20 74 68 65 20 6e | 65 78 74 2f 70 72 65 76 |at the n|ext/prev|
|00002f50| 69 6f 75 73 0d 2f 2f 20 | 62 6c 6f 63 6b 20 6c 69 |ious.// |block li|
|00002f60| 6e 6b 73 20 64 6f 20 6e | 6f 74 20 62 65 63 6f 6d |nks do n|ot becom|
|00002f70| 65 20 69 6e 76 61 6c 69 | 64 20 77 68 65 6e 20 74 |e invali|d when t|
|00002f80| 68 65 20 74 72 61 6e 73 | 61 63 74 69 6f 6e 20 69 |he trans|action i|
|00002f90| 73 20 63 6f 6d 6d 69 74 | 74 65 64 2e 0d 2f 2f 2d |s commit|ted..//-|
|00002fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00002ff0| 76 6f 69 64 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |void TGr|oupContr|
|00003000| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 57 72 69 74 65 54 |olObject|::WriteT|
|00003010| 68 72 6f 75 67 68 54 6f | 54 72 61 6e 73 61 63 74 |hroughTo|Transact|
|00003020| 69 6f 6e 28 6c 6f 6e 67 | 20 72 65 63 6f 72 64 49 |ion(long| recordI|
|00003030| 6e 64 65 78 2c 20 6c 6f | 6e 67 20 6c 6f 6e 67 77 |ndex, lo|ng longw|
|00003040| 6f 72 64 4e 75 6d 62 65 | 72 2c 20 6c 6f 6e 67 20 |ordNumbe|r, long |
|00003050| 74 68 65 44 61 74 61 2c | 20 6c 6f 6e 67 20 74 68 |theData,| long th|
|00003060| 65 4d 61 73 6b 29 0d 7b | 0d 09 6c 6f 6e 67 20 63 |eMask).{|..long c|
|00003070| 75 72 72 65 6e 74 57 6f | 72 64 56 61 6c 75 65 20 |urrentWo|rdValue |
|00003080| 3d 20 74 68 69 73 2d 3e | 47 65 74 52 65 63 6f 72 |= this->|GetRecor|
|00003090| 64 57 6f 72 64 28 72 65 | 63 6f 72 64 49 6e 64 65 |dWord(re|cordInde|
|000030a0| 78 2c 20 6c 6f 6e 67 77 | 6f 72 64 4e 75 6d 62 65 |x, longw|ordNumbe|
|000030b0| 72 29 3b 0d 09 74 68 69 | 73 2d 3e 57 72 69 74 65 |r);..thi|s->Write|
|000030c0| 52 65 63 6f 72 64 57 6f | 72 64 28 72 65 63 6f 72 |RecordWo|rd(recor|
|000030d0| 64 49 6e 64 65 78 2c 20 | 6c 6f 6e 67 77 6f 72 64 |dIndex, |longword|
|000030e0| 4e 75 6d 62 65 72 2c 20 | 28 63 75 72 72 65 6e 74 |Number, |(current|
|000030f0| 57 6f 72 64 56 61 6c 75 | 65 20 26 20 7e 74 68 65 |WordValu|e & ~the|
|00003100| 4d 61 73 6b 29 20 7c 20 | 28 74 68 65 44 61 74 61 |Mask) | |(theData|
|00003110| 20 26 20 74 68 65 4d 61 | 73 6b 29 29 3b 0d 0d 09 | & theMa|sk));...|
|00003120| 2f 2f 0d 09 2f 2f 20 49 | 66 20 74 68 65 20 75 70 |//..// I|f the up|
|00003130| 64 61 74 65 20 63 75 72 | 73 6f 72 20 65 78 69 73 |date cur|sor exis|
|00003140| 74 73 2c 20 69 6e 66 6f | 72 6d 20 69 74 20 74 68 |ts, info|rm it th|
|00003150| 61 74 20 69 74 20 6e 65 | 65 64 73 20 74 6f 20 63 |at it ne|eds to c|
|00003160| 68 61 6e 67 65 20 73 6f | 6d 65 20 62 69 74 73 0d |hange so|me bits.|
|00003170| 09 2f 2f 0d 09 6c 6f 6e | 67 20 72 65 6c 61 74 69 |.//..lon|g relati|
|00003180| 76 65 49 6e 64 65 78 20 | 3d 20 74 68 69 73 2d 3e |veIndex |= this->|
|00003190| 43 61 6c 63 75 6c 61 74 | 65 52 65 6c 61 74 69 76 |Calculat|eRelativ|
|000031a0| 65 49 6e 64 65 78 28 72 | 65 63 6f 72 64 49 6e 64 |eIndex(r|ecordInd|
|000031b0| 65 78 29 3b 0d 09 69 66 | 28 66 52 65 63 6f 72 64 |ex);..if|(fRecord|
|000031c0| 43 75 72 73 6f 72 73 5b | 72 65 6c 61 74 69 76 65 |Cursors[|relative|
|000031d0| 49 6e 64 65 78 5d 20 21 | 3d 20 6e 69 6c 29 0d 09 |Index] !|= nil)..|
|000031e0| 7b 0d 09 09 66 52 65 63 | 6f 72 64 43 75 72 73 6f |{...fRec|ordCurso|
|000031f0| 72 73 5b 72 65 6c 61 74 | 69 76 65 49 6e 64 65 78 |rs[relat|iveIndex|
|00003200| 5d 2d 3e 57 72 69 74 65 | 54 68 72 6f 75 67 68 54 |]->Write|ThroughT|
|00003210| 6f 54 72 61 6e 73 61 63 | 74 69 6f 6e 28 6c 6f 6e |oTransac|tion(lon|
|00003220| 67 77 6f 72 64 4e 75 6d | 62 65 72 2c 20 74 68 65 |gwordNum|ber, the|
|00003230| 44 61 74 61 2c 20 74 68 | 65 4d 61 73 6b 29 3b 0d |Data, th|eMask);.|
|00003240| 09 7d 0d 7d 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |.}.}..//|--------|
|00003250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003290| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|000032a0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|000032b0| 3a 4d 61 6b 65 52 65 63 | 6f 72 64 44 61 74 61 43 |:MakeRec|ordDataC|
|000032c0| 6f 70 79 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |opy.//--|--------|
|000032d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003310| 2d 2d 2d 2d 2d 2d 0d 6c | 6f 6e 67 2a 20 54 47 72 |------.l|ong* TGr|
|00003320| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00003330| 3a 3a 4d 61 6b 65 52 65 | 63 6f 72 64 44 61 74 61 |::MakeRe|cordData|
|00003340| 43 6f 70 79 28 6c 6f 6e | 67 20 72 65 63 6f 72 64 |Copy(lon|g record|
|00003350| 49 6e 64 65 78 29 0d 7b | 0d 09 6c 6f 6e 67 2a 20 |Index).{|..long* |
|00003360| 72 65 63 6f 72 64 44 61 | 74 61 41 64 64 72 65 73 |recordDa|taAddres|
|00003370| 73 20 3d 20 74 68 69 73 | 2d 3e 52 65 63 6f 72 64 |s = this|->Record|
|00003380| 44 61 74 61 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |Data(rec|ordIndex|
|00003390| 29 3b 0d 09 6c 6f 6e 67 | 20 72 65 63 6f 72 64 44 |);..long| recordD|
|000033a0| 61 74 61 4c 6f 6e 67 73 | 20 3d 20 74 68 69 73 2d |ataLongs| = this-|
|000033b0| 3e 4c 6f 6e 67 77 6f 72 | 64 73 49 6e 52 65 63 6f |>Longwor|dsInReco|
|000033c0| 72 64 28 72 65 63 6f 72 | 64 49 6e 64 65 78 29 3b |rd(recor|dIndex);|
|000033d0| 0d 09 0d 09 6c 6f 6e 67 | 2a 20 64 61 74 61 43 6f |....long|* dataCo|
|000033e0| 70 79 20 3d 20 6e 65 77 | 20 6c 6f 6e 67 5b 72 65 |py = new| long[re|
|000033f0| 63 6f 72 64 44 61 74 61 | 4c 6f 6e 67 73 5d 3b 0d |cordData|Longs];.|
|00003400| 09 46 61 69 6c 4e 69 6c | 28 64 61 74 61 43 6f 70 |.FailNil|(dataCop|
|00003410| 79 29 3b 0d 09 6d 65 6d | 63 70 79 28 64 61 74 61 |y);..mem|cpy(data|
|00003420| 43 6f 70 79 2c 20 72 65 | 63 6f 72 64 44 61 74 61 |Copy, re|cordData|
|00003430| 41 64 64 72 65 73 73 2c | 20 72 65 63 6f 72 64 44 |Address,| recordD|
|00003440| 61 74 61 4c 6f 6e 67 73 | 20 2a 20 73 69 7a 65 6f |ataLongs| * sizeo|
|00003450| 66 28 6c 6f 6e 67 29 29 | 3b 0d 09 0d 09 72 65 74 |f(long))|;....ret|
|00003460| 75 72 6e 20 64 61 74 61 | 43 6f 70 79 3b 0d 7d 20 |urn data|Copy;.} |
|00003470| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|00003480| 4f 62 6a 65 63 74 3a 3a | 4d 61 6b 65 52 65 63 6f |Object::|MakeReco|
|00003490| 72 64 44 61 74 61 43 6f | 70 79 0d 0d 2f 2f 2d 2d |rdDataCo|py..//--|
|000034a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|000034f0| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|00003500| 62 6a 65 63 74 3a 3a 43 | 68 61 6e 67 65 52 65 63 |bject::C|hangeRec|
|00003510| 6f 72 64 44 61 74 61 0d | 2f 2f 2d 2d 2d 2d 2d 2d |ordData.|//------|
|00003520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 76 6f 69 64 20 |--------|--.void |
|00003570| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00003580| 65 63 74 3a 3a 43 68 61 | 6e 67 65 52 65 63 6f 72 |ect::Cha|ngeRecor|
|00003590| 64 44 61 74 61 28 6c 6f | 6e 67 20 72 65 63 6f 72 |dData(lo|ng recor|
|000035a0| 64 49 6e 64 65 78 2c 20 | 6c 6f 6e 67 2a 20 6e 65 |dIndex, |long* ne|
|000035b0| 77 44 61 74 61 2c 20 42 | 6f 6f 6c 65 61 6e 20 69 |wData, B|oolean i|
|000035c0| 6e 68 69 62 69 74 43 6f | 6d 70 61 72 65 20 2f 2a |nhibitCo|mpare /*|
|000035d0| 20 3d 20 66 61 6c 73 65 | 20 2a 2f 29 0d 7b 0d 09 | = false| */).{..|
|000035e0| 52 45 51 55 49 52 45 56 | 41 4c 49 44 50 4f 49 4e |REQUIREV|ALIDPOIN|
|000035f0| 54 45 52 28 6e 65 77 44 | 61 74 61 29 3b 0d 09 6c |TER(newD|ata);..l|
|00003600| 6f 6e 67 2a 20 72 65 63 | 6f 72 64 44 61 74 61 41 |ong* rec|ordDataA|
|00003610| 64 64 72 65 73 73 20 3d | 20 74 68 69 73 2d 3e 52 |ddress =| this->R|
|00003620| 65 63 6f 72 64 44 61 74 | 61 28 72 65 63 6f 72 64 |ecordDat|a(record|
|00003630| 49 6e 64 65 78 29 3b 0d | 09 6c 6f 6e 67 20 6c 65 |Index);.|.long le|
|00003640| 6e 67 74 68 54 6f 43 6f | 70 79 20 3d 20 74 68 69 |ngthToCo|py = thi|
|00003650| 73 2d 3e 4c 6f 6e 67 77 | 6f 72 64 73 49 6e 52 65 |s->Longw|ordsInRe|
|00003660| 63 6f 72 64 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |cord(rec|ordIndex|
|00003670| 29 20 2a 20 73 69 7a 65 | 6f 66 28 6c 6f 6e 67 29 |) * size|of(long)|
|00003680| 3b 0d 0d 09 2f 2f 0d 09 | 2f 2f 20 49 66 20 74 68 |;...//..|// If th|
|00003690| 65 20 64 61 74 61 20 68 | 61 73 20 63 68 61 6e 67 |e data h|as chang|
|000036a0| 65 64 20 69 6e 20 61 6e | 79 20 77 61 79 2c 20 74 |ed in an|y way, t|
|000036b0| 68 65 6e 20 63 6f 70 79 | 20 74 68 65 0d 09 2f 2f |hen copy| the..//|
|000036c0| 20 6e 65 77 20 64 61 74 | 61 20 62 61 63 6b 20 69 | new dat|a back i|
|000036d0| 6e 74 6f 20 74 68 65 20 | 67 72 6f 75 70 20 63 6f |nto the |group co|
|000036e0| 6e 74 72 6f 6c 20 6f 62 | 6a 65 63 74 20 61 6e 64 |ntrol ob|ject and|
|000036f0| 0d 09 2f 2f 20 6d 61 72 | 6b 20 74 68 61 74 20 74 |..// mar|k that t|
|00003700| 68 69 73 20 6f 62 6a 65 | 63 74 20 68 61 73 20 63 |his obje|ct has c|
|00003710| 68 61 6e 67 65 64 2e 0d | 09 2f 2f 0d 09 2f 2f 20 |hanged..|.//..// |
|00003720| 49 74 20 69 73 20 77 6f | 72 74 68 20 69 74 20 74 |It is wo|rth it t|
|00003730| 6f 20 64 6f 20 74 68 65 | 20 63 6f 6d 70 61 72 65 |o do the| compare|
|00003740| 20 69 66 20 69 74 20 6d | 65 61 6e 73 20 74 68 61 | if it m|eans tha|
|00003750| 74 0d 09 2f 2f 20 77 65 | 20 6d 69 67 68 74 20 6e |t..// we| might n|
|00003760| 6f 74 20 6e 65 65 64 20 | 74 6f 20 77 72 69 74 65 |ot need |to write|
|00003770| 20 74 68 69 73 20 67 72 | 6f 75 70 20 62 61 63 6b | this gr|oup back|
|00003780| 20 74 6f 20 64 69 73 6b | 3b 0d 09 2f 2f 20 69 66 | to disk|;..// if|
|00003790| 2c 20 68 6f 77 65 76 65 | 72 2c 20 74 68 69 73 20 |, howeve|r, this |
|000037a0| 67 72 6f 75 70 20 69 73 | 20 61 6c 72 65 61 64 79 |group is| already|
|000037b0| 20 64 69 72 74 79 2c 20 | 6f 72 20 69 66 0d 09 2f | dirty, |or if../|
|000037c0| 2f 20 74 68 65 20 63 61 | 6c 6c 65 72 20 6b 6e 6f |/ the ca|ller kno|
|000037d0| 77 73 20 66 6f 72 20 63 | 65 72 74 61 69 6e 20 74 |ws for c|ertain t|
|000037e0| 68 61 74 20 74 68 65 20 | 64 61 74 61 20 68 61 73 |hat the |data has|
|000037f0| 0d 09 2f 2f 20 63 68 61 | 6e 67 65 64 2c 20 74 68 |..// cha|nged, th|
|00003800| 65 6e 20 77 65 20 77 6f | 6e 27 74 20 62 6f 74 68 |en we wo|n't both|
|00003810| 65 72 20 74 6f 20 63 61 | 6c 6c 20 6d 65 6d 63 6d |er to ca|ll memcm|
|00003820| 70 2e 0d 09 2f 2f 0d 09 | 2f 2f 20 46 75 74 75 72 |p...//..|// Futur|
|00003830| 65 3a 20 20 57 68 65 6e | 20 77 65 20 73 74 61 72 |e: When| we star|
|00003840| 74 20 63 6f 6c 6c 65 63 | 74 69 6e 67 20 63 68 61 |t collec|ting cha|
|00003850| 6e 67 65 64 20 72 65 63 | 6f 72 64 0d 09 2f 2f 20 |nged rec|ord..// |
|00003860| 67 72 6f 75 70 73 20 69 | 6e 74 6f 20 63 68 61 6e |groups i|nto chan|
|00003870| 67 65 20 73 65 74 73 2c | 20 74 68 65 6e 20 69 74 |ge sets,| then it|
|00003880| 20 61 6c 73 6f 20 6d 61 | 74 74 65 72 73 20 69 66 | also ma|tters if|
|00003890| 0d 09 2f 2f 20 74 68 69 | 73 20 72 65 63 6f 72 64 |..// thi|s record|
|000038a0| 20 67 72 6f 75 70 20 62 | 65 6c 6f 6e 67 73 20 74 | group b|elongs t|
|000038b0| 6f 20 74 68 65 20 63 75 | 72 72 65 6e 74 20 63 68 |o the cu|rrent ch|
|000038c0| 61 6e 67 65 20 73 65 74 | 0d 09 2f 2f 20 79 65 74 |ange set|..// yet|
|000038d0| 2c 20 61 73 20 77 65 20 | 77 6f 75 6c 64 20 6c 69 |, as we |would li|
|000038e0| 6b 65 20 74 6f 20 61 76 | 6f 69 64 20 6d 65 72 67 |ke to av|oid merg|
|000038f0| 69 6e 67 20 63 68 61 6e | 67 65 20 73 65 74 73 0d |ing chan|ge sets.|
|00003900| 09 2f 2f 20 69 66 20 74 | 68 65 20 72 65 63 6f 72 |.// if t|he recor|
|00003910| 64 20 64 61 74 61 20 68 | 61 73 6e 27 74 20 61 63 |d data h|asn't ac|
|00003920| 74 75 61 6c 6c 79 20 63 | 68 61 6e 67 65 64 2e 0d |tually c|hanged..|
|00003930| 09 2f 2f 0d 09 69 66 28 | 28 69 6e 68 69 62 69 74 |.//..if(|(inhibit|
|00003940| 43 6f 6d 70 61 72 65 20 | 3d 3d 20 74 72 75 65 29 |Compare |== true)|
|00003950| 20 7c 7c 20 28 74 68 69 | 73 2d 3e 52 65 63 6f 72 | || (thi|s->Recor|
|00003960| 64 47 72 6f 75 70 4e 65 | 65 64 73 53 61 76 65 28 |dGroupNe|edsSave(|
|00003970| 29 29 20 7c 7c 20 28 6d | 65 6d 63 6d 70 28 72 65 |)) || (m|emcmp(re|
|00003980| 63 6f 72 64 44 61 74 61 | 41 64 64 72 65 73 73 2c |cordData|Address,|
|00003990| 20 6e 65 77 44 61 74 61 | 2c 20 6c 65 6e 67 74 68 | newData|, length|
|000039a0| 54 6f 43 6f 70 79 29 20 | 21 3d 20 30 29 29 0d 09 |ToCopy) |!= 0))..|
|000039b0| 7b 0d 09 09 6d 65 6d 63 | 70 79 28 72 65 63 6f 72 |{...memc|py(recor|
|000039c0| 64 44 61 74 61 41 64 64 | 72 65 73 73 2c 20 6e 65 |dDataAdd|ress, ne|
|000039d0| 77 44 61 74 61 2c 20 6c | 65 6e 67 74 68 54 6f 43 |wData, l|engthToC|
|000039e0| 6f 70 79 29 3b 0d 09 09 | 74 68 69 73 2d 3e 52 65 |opy);...|this->Re|
|000039f0| 63 6f 72 64 47 72 6f 75 | 70 48 61 73 43 68 61 6e |cordGrou|pHasChan|
|00003a00| 67 65 64 28 29 3b 0d 09 | 7d 0d 7d 20 2f 2f 20 54 |ged();..|}.} // T|
|00003a10| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00003a20| 63 74 3a 3a 43 68 61 6e | 67 65 52 65 63 6f 72 64 |ct::Chan|geRecord|
|00003a30| 44 61 74 61 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |Data..//|--------|
|00003a40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003a50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003a60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003a70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003a80| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00003a90| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00003aa0| 3a 52 65 63 6f 72 64 44 | 61 74 61 52 65 66 65 72 |:RecordD|ataRefer|
|00003ab0| 65 6e 63 65 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ence.//-|--------|
|00003ac0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003ad0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003ae0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003af0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b00| 2d 2d 2d 2d 2d 2d 2d 0d | 63 6f 6e 73 74 20 54 43 |-------.|const TC|
|00003b10| 6f 6e 73 74 44 61 74 61 | 52 65 66 65 72 65 6e 63 |onstData|Referenc|
|00003b20| 65 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |e TGroup|ControlO|
|00003b30| 62 6a 65 63 74 3a 3a 52 | 65 63 6f 72 64 44 61 74 |bject::R|ecordDat|
|00003b40| 61 52 65 66 65 72 65 6e | 63 65 28 6c 6f 6e 67 20 |aReferen|ce(long |
|00003b50| 72 65 63 6f 72 64 49 6e | 64 65 78 2c 20 6c 6f 6e |recordIn|dex, lon|
|00003b60| 67 20 64 61 74 61 54 79 | 70 65 2c 20 6c 6f 6e 67 |g dataTy|pe, long|
|00003b70| 20 6c 6f 6e 67 77 6f 72 | 64 4e 75 6d 62 65 72 2c | longwor|dNumber,|
|00003b80| 20 6c 6f 6e 67 20 6e 75 | 6d 62 65 72 4f 66 42 79 | long nu|mberOfBy|
|00003b90| 74 65 73 29 20 63 6f 6e | 73 74 0d 7b 0d 09 6c 6f |tes) con|st.{..lo|
|00003ba0| 6e 67 2a 20 72 65 63 6f | 72 64 44 61 74 61 41 64 |ng* reco|rdDataAd|
|00003bb0| 64 72 65 73 73 20 3d 20 | 74 68 69 73 2d 3e 52 65 |dress = |this->Re|
|00003bc0| 63 6f 72 64 44 61 74 61 | 28 72 65 63 6f 72 64 49 |cordData|(recordI|
|00003bd0| 6e 64 65 78 29 3b 0d 0d | 09 72 65 74 75 72 6e 20 |ndex);..|.return |
|00003be0| 54 43 6f 6e 73 74 44 61 | 74 61 52 65 66 65 72 65 |TConstDa|taRefere|
|00003bf0| 6e 63 65 28 64 61 74 61 | 54 79 70 65 2c 20 28 63 |nce(data|Type, (c|
|00003c00| 68 61 72 2a 29 26 72 65 | 63 6f 72 64 44 61 74 61 |har*)&re|cordData|
|00003c10| 41 64 64 72 65 73 73 5b | 6c 6f 6e 67 77 6f 72 64 |Address[|longword|
|00003c20| 4e 75 6d 62 65 72 5d 2c | 20 6e 75 6d 62 65 72 4f |Number],| numberO|
|00003c30| 66 42 79 74 65 73 29 3b | 0d 7d 20 2f 2f 20 54 47 |fBytes);|.} // TG|
|00003c40| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00003c50| 74 3a 3a 52 65 63 6f 72 | 64 44 61 74 61 52 65 66 |t::Recor|dDataRef|
|00003c60| 65 72 65 6e 63 65 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |erence..|//------|
|00003c70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003c90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003ca0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003cb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 47 |--------|--.// TG|
|00003cc0| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00003cd0| 74 3a 3a 54 72 69 6d 42 | 6c 6f 63 6b 0d 2f 2f 0d |t::TrimB|lock.//.|
|00003ce0| 2f 2f 20 52 65 64 75 63 | 65 20 74 68 65 20 73 69 |// Reduc|e the si|
|00003cf0| 7a 65 20 6f 66 20 27 62 | 6c 6f 63 6b 54 6f 54 72 |ze of 'b|lockToTr|
|00003d00| 69 6d 27 20 64 6f 77 6e | 20 74 6f 20 27 6e 65 77 |im' down| to 'new|
|00003d10| 45 6e 63 6f 64 65 64 50 | 68 79 73 69 63 61 6c 53 |EncodedP|hysicalS|
|00003d20| 69 7a 65 27 2e 0d 2f 2f | 20 52 65 74 75 72 6e 20 |ize'..//| Return |
|00003d30| 74 68 65 20 69 6e 64 65 | 78 20 6f 66 20 74 68 65 |the inde|x of the|
|00003d40| 20 62 6c 6f 63 6b 20 6c | 65 66 74 20 6f 76 65 72 | block l|eft over|
|00003d50| 2c 20 69 66 20 61 6e 79 | 2e 0d 2f 2f 2d 2d 2d 2d |, if any|..//----|
|00003d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003da0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 6c 6f 6e |--------|----.lon|
|00003db0| 67 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |g TGroup|ControlO|
|00003dc0| 62 6a 65 63 74 3a 3a 54 | 72 69 6d 42 6c 6f 63 6b |bject::T|rimBlock|
|00003dd0| 28 6c 6f 6e 67 20 62 6c | 6f 63 6b 54 6f 54 72 69 |(long bl|ockToTri|
|00003de0| 6d 2c 20 6c 6f 6e 67 20 | 6e 65 77 45 6e 63 6f 64 |m, long |newEncod|
|00003df0| 65 64 50 68 79 73 69 63 | 61 6c 53 69 7a 65 29 0d |edPhysic|alSize).|
|00003e00| 7b 0d 09 6c 6f 6e 67 20 | 63 75 72 72 65 6e 74 45 |{..long |currentE|
|00003e10| 6e 63 6f 64 65 64 50 68 | 79 73 69 63 61 6c 53 69 |ncodedPh|ysicalSi|
|00003e20| 7a 65 20 3d 20 74 68 69 | 73 2d 3e 42 6c 6f 63 6b |ze = thi|s->Block|
|00003e30| 45 6e 63 6f 64 65 64 50 | 68 79 73 69 63 61 6c 53 |EncodedP|hysicalS|
|00003e40| 69 7a 65 28 62 6c 6f 63 | 6b 54 6f 54 72 69 6d 29 |ize(bloc|kToTrim)|
|00003e50| 3b 0d 09 6c 6f 6e 67 20 | 6c 65 66 74 4f 76 65 72 |;..long |leftOver|
|00003e60| 50 69 65 63 65 20 3d 20 | 2d 31 3b 0d 09 0d 09 2f |Piece = |-1;..../|
|00003e70| 2f 0d 09 2f 2f 20 44 6f | 6e 27 74 20 74 72 69 6d |/..// Do|n't trim|
|00003e80| 20 61 20 62 6c 6f 63 6b | 20 64 6f 77 6e 20 62 79 | a block| down by|
|00003e90| 20 6a 75 73 74 20 6f 6e | 65 20 72 65 63 6f 72 64 | just on|e record|
|00003ea0| 20 73 69 7a 65 3b 20 77 | 65 0d 09 2f 2f 20 61 6c | size; w|e..// al|
|00003eb0| 77 61 79 73 20 77 61 6e | 74 20 74 68 65 20 6c 65 |ways wan|t the le|
|00003ec0| 66 74 6f 76 65 72 20 70 | 65 69 63 65 20 74 6f 20 |ftover p|eice to |
|00003ed0| 62 65 20 61 74 20 6c 65 | 61 73 74 20 32 20 72 65 |be at le|ast 2 re|
|00003ee0| 63 6f 72 64 73 20 6c 6f | 6e 67 2e 0d 09 2f 2f 0d |cords lo|ng...//.|
|00003ef0| 09 69 66 28 28 63 75 72 | 72 65 6e 74 45 6e 63 6f |.if((cur|rentEnco|
|00003f00| 64 65 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 20 |dedPhysi|calSize |
|00003f10| 2d 20 6e 65 77 45 6e 63 | 6f 64 65 64 50 68 79 73 |- newEnc|odedPhys|
|00003f20| 69 63 61 6c 53 69 7a 65 | 29 20 3e 20 31 29 0d 09 |icalSize|) > 1)..|
|00003f30| 7b 0d 09 09 2f 2f 0d 09 | 09 2f 2f 20 57 65 20 61 |{...//..|.// We a|
|00003f40| 72 65 20 67 6f 69 6e 67 | 20 74 6f 20 6d 61 6b 65 |re going| to make|
|00003f50| 20 6f 75 72 20 62 6c 6f | 63 6b 20 73 6d 61 6c 6c | our blo|ck small|
|00003f60| 65 72 20 62 79 20 61 20 | 66 65 77 20 28 61 74 20 |er by a |few (at |
|00003f70| 6c 65 61 73 74 20 74 77 | 6f 29 0d 09 09 2f 2f 20 |least tw|o)...// |
|00003f80| 72 65 63 6f 72 64 73 3b | 20 27 65 6e 63 6f 64 65 |records;| 'encode|
|00003f90| 64 53 69 7a 65 4c 65 66 | 74 41 66 74 65 72 54 72 |dSizeLef|tAfterTr|
|00003fa0| 69 6d 27 20 69 73 20 74 | 68 65 20 73 69 7a 65 20 |im' is t|he size |
|00003fb0| 6f 66 20 74 68 65 0d 09 | 09 2f 2f 20 72 65 63 6f |of the..|.// reco|
|00003fc0| 72 64 20 6c 65 66 74 20 | 6f 76 65 72 20 61 66 74 |rd left |over aft|
|00003fd0| 65 72 20 77 65 20 64 6f | 20 73 6f 2e 0d 09 09 2f |er we do| so..../|
|00003fe0| 2f 0d 09 09 6c 6f 6e 67 | 20 65 6e 63 6f 64 65 64 |/...long| encoded|
|00003ff0| 53 69 7a 65 4c 65 66 74 | 41 66 74 65 72 54 72 69 |SizeLeft|AfterTri|
|00004000| 6d 20 3d 20 28 63 75 72 | 72 65 6e 74 45 6e 63 6f |m = (cur|rentEnco|
|00004010| 64 65 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 20 |dedPhysi|calSize |
|00004020| 2d 20 6e 65 77 45 6e 63 | 6f 64 65 64 50 68 79 73 |- newEnc|odedPhys|
|00004030| 69 63 61 6c 53 69 7a 65 | 29 20 2d 20 31 3b 0d 09 |icalSize|) - 1;..|
|00004040| 09 0d 09 09 2f 2f 0d 09 | 09 2f 2f 20 43 61 6c 63 |....//..|.// Calc|
|00004050| 75 6c 61 74 65 20 74 68 | 65 20 72 65 63 6f 72 64 |ulate th|e record|
|00004060| 20 69 6e 64 65 78 20 6f | 66 20 74 68 65 20 62 6c | index o|f the bl|
|00004070| 6f 63 6b 20 77 65 27 72 | 65 20 73 70 6c 69 74 74 |ock we'r|e splitt|
|00004080| 69 6e 67 0d 09 09 2f 2f | 20 6f 66 66 20 28 27 6c |ing...//| off ('l|
|00004090| 65 66 74 4f 76 65 72 50 | 69 65 63 65 27 29 20 61 |eftOverP|iece') a|
|000040a0| 6e 64 20 74 68 65 20 72 | 65 63 6f 72 64 20 69 6e |nd the r|ecord in|
|000040b0| 64 65 78 20 6f 66 20 74 | 68 65 20 62 6c 6f 63 6b |dex of t|he block|
|000040c0| 0d 09 09 2f 2f 20 61 66 | 74 65 72 20 74 68 69 73 |...// af|ter this|
|000040d0| 20 6f 6e 65 20 28 77 65 | 27 6c 6c 20 6e 65 65 64 | one (we|'ll need|
|000040e0| 20 74 6f 20 61 64 6a 75 | 73 74 20 69 74 73 20 27 | to adju|st its '|
|000040f0| 70 68 79 73 69 63 61 6c | 20 73 69 7a 65 0d 09 09 |physical| size...|
|00004100| 2f 2f 20 6f 66 20 70 72 | 65 76 69 6f 75 73 20 62 |// of pr|evious b|
|00004110| 6c 6f 63 6b 27 29 20 6c | 69 6e 6b 2e 0d 09 09 2f |lock') l|ink..../|
|00004120| 2f 0d 09 09 6c 65 66 74 | 4f 76 65 72 50 69 65 63 |/...left|OverPiec|
|00004130| 65 20 3d 20 62 6c 6f 63 | 6b 54 6f 54 72 69 6d 20 |e = bloc|kToTrim |
|00004140| 2b 20 6e 65 77 45 6e 63 | 6f 64 65 64 50 68 79 73 |+ newEnc|odedPhys|
|00004150| 69 63 61 6c 53 69 7a 65 | 20 2b 20 31 3b 0d 09 09 |icalSize| + 1;...|
|00004160| 6c 6f 6e 67 20 62 6c 6f | 63 6b 54 6f 46 69 78 55 |long blo|ckToFixU|
|00004170| 70 20 3d 20 62 6c 6f 63 | 6b 54 6f 54 72 69 6d 20 |p = bloc|kToTrim |
|00004180| 2b 20 63 75 72 72 65 6e | 74 45 6e 63 6f 64 65 64 |+ curren|tEncoded|
|00004190| 50 68 79 73 69 63 61 6c | 53 69 7a 65 20 2b 20 31 |Physical|Size + 1|
|000041a0| 3b 0d 09 09 41 53 53 45 | 52 54 28 6c 65 66 74 4f |;...ASSE|RT(leftO|
|000041b0| 76 65 72 50 69 65 63 65 | 20 2b 20 65 6e 63 6f 64 |verPiece| + encod|
|000041c0| 65 64 53 69 7a 65 4c 65 | 66 74 41 66 74 65 72 54 |edSizeLe|ftAfterT|
|000041d0| 72 69 6d 20 2b 20 31 20 | 3d 3d 20 62 6c 6f 63 6b |rim + 1 |== block|
|000041e0| 54 6f 46 69 78 55 70 29 | 3b 0d 09 09 52 65 71 75 |ToFixUp)|;...Requ|
|000041f0| 69 72 65 28 62 6c 6f 63 | 6b 54 6f 46 69 78 55 70 |ire(bloc|kToFixUp|
|00004200| 20 3c 3d 20 74 68 69 73 | 2d 3e 46 69 72 73 74 52 | <= this|->FirstR|
|00004210| 65 63 6f 72 64 49 6e 64 | 65 78 28 29 20 2b 20 6b |ecordInd|ex() + k|
|00004220| 52 65 63 6f 72 64 73 50 | 65 72 47 72 6f 75 70 29 |RecordsP|erGroup)|
|00004230| 3b 0d 09 09 0d 09 09 2f | 2f 0d 09 09 2f 2f 20 57 |;....../|/...// W|
|00004240| 65 20 6f 6e 6c 79 20 73 | 70 6c 69 74 20 62 6c 6f |e only s|plit blo|
|00004250| 63 6b 73 20 74 68 61 74 | 20 61 72 65 20 66 72 65 |cks that| are fre|
|00004260| 65 2c 20 73 6f 20 77 65 | 20 6b 6e 6f 77 20 74 68 |e, so we| know th|
|00004270| 61 74 20 77 65 0d 09 09 | 2f 2f 20 63 61 6e 20 61 |at we...|// can a|
|00004280| 64 6a 75 73 74 20 27 62 | 6c 6f 63 6b 54 6f 54 72 |djust 'b|lockToTr|
|00004290| 69 6d 27 20 61 6e 64 20 | 27 6c 65 66 74 4f 76 65 |im' and |'leftOve|
|000042a0| 72 50 69 65 63 65 27 20 | 77 69 74 68 6f 75 74 0d |rPiece' |without.|
|000042b0| 09 09 2f 2f 20 77 6f 72 | 72 79 69 6e 67 20 61 62 |..// wor|rying ab|
|000042c0| 6f 75 74 20 61 20 74 72 | 61 6e 73 61 63 74 69 6f |out a tr|ansactio|
|000042d0| 6e 2e 0d 09 09 2f 2f 0d | 09 09 52 65 71 75 69 72 |n....//.|..Requir|
|000042e0| 65 28 28 66 52 65 63 6f | 72 64 43 75 72 73 6f 72 |e((fReco|rdCursor|
|000042f0| 73 5b 74 68 69 73 2d 3e | 43 61 6c 63 75 6c 61 74 |s[this->|Calculat|
|00004300| 65 52 65 6c 61 74 69 76 | 65 49 6e 64 65 78 28 62 |eRelativ|eIndex(b|
|00004310| 6c 6f 63 6b 54 6f 54 72 | 69 6d 29 5d 20 3d 3d 20 |lockToTr|im)] == |
|00004320| 6e 69 6c 29 20 26 26 20 | 28 66 52 65 63 6f 72 64 |nil) && |(fRecord|
|00004330| 43 75 72 73 6f 72 73 5b | 74 68 69 73 2d 3e 43 61 |Cursors[|this->Ca|
|00004340| 6c 63 75 6c 61 74 65 52 | 65 6c 61 74 69 76 65 49 |lculateR|elativeI|
|00004350| 6e 64 65 78 28 6c 65 66 | 74 4f 76 65 72 50 69 65 |ndex(lef|tOverPie|
|00004360| 63 65 29 5d 20 3d 3d 20 | 6e 69 6c 29 29 3b 0d 09 |ce)] == |nil));..|
|00004370| 09 6c 6f 6e 67 20 74 72 | 69 6d 42 6c 6f 63 6b 46 |.long tr|imBlockF|
|00004380| 6c 61 67 73 20 3d 20 74 | 68 69 73 2d 3e 47 65 74 |lags = t|his->Get|
|00004390| 52 65 63 6f 72 64 57 6f | 72 64 28 62 6c 6f 63 6b |RecordWo|rd(block|
|000043a0| 54 6f 54 72 69 6d 2c 20 | 6b 52 65 63 6f 72 64 49 |ToTrim, |kRecordI|
|000043b0| 44 46 6c 61 67 73 57 6f | 72 64 29 3b 0d 09 09 74 |DFlagsWo|rd);...t|
|000043c0| 72 69 6d 42 6c 6f 63 6b | 46 6c 61 67 73 20 3d 20 |rimBlock|Flags = |
|000043d0| 28 74 72 69 6d 42 6c 6f | 63 6b 46 6c 61 67 73 20 |(trimBlo|ckFlags |
|000043e0| 26 20 7e 6b 44 61 74 61 | 52 65 63 6f 72 64 50 68 |& ~kData|RecordPh|
|000043f0| 79 73 69 63 61 6c 53 69 | 7a 65 42 69 74 73 29 20 |ysicalSi|zeBits) |
|00004400| 7c 20 28 28 6e 65 77 45 | 6e 63 6f 64 65 64 50 68 || ((newE|ncodedPh|
|00004410| 79 73 69 63 61 6c 53 69 | 7a 65 20 3c 3c 20 6b 44 |ysicalSi|ze << kD|
|00004420| 61 74 61 52 65 63 6f 72 | 64 50 68 79 73 69 63 61 |ataRecor|dPhysica|
|00004430| 6c 53 69 7a 65 53 68 69 | 66 74 29 20 26 20 6b 44 |lSizeShi|ft) & kD|
|00004440| 61 74 61 52 65 63 6f 72 | 64 50 68 79 73 69 63 61 |ataRecor|dPhysica|
|00004450| 6c 53 69 7a 65 42 69 74 | 73 29 3b 0d 09 09 6c 6f |lSizeBit|s);...lo|
|00004460| 6e 67 20 6c 65 66 74 4f | 76 65 72 42 6c 6f 63 6b |ng leftO|verBlock|
|00004470| 46 6c 61 67 73 20 3d 09 | 28 6b 46 72 65 65 44 61 |Flags =.|(kFreeDa|
|00004480| 74 61 52 65 63 6f 72 64 | 49 44 29 20 7c 0d 09 09 |taRecord|ID) |...|
|00004490| 09 09 09 09 09 09 09 28 | 28 65 6e 63 6f 64 65 64 |.......(|(encoded|
|000044a0| 53 69 7a 65 4c 65 66 74 | 41 66 74 65 72 54 72 69 |SizeLeft|AfterTri|
|000044b0| 6d 20 3c 3c 20 6b 44 61 | 74 61 52 65 63 6f 72 64 |m << kDa|taRecord|
|000044c0| 50 68 79 73 69 63 61 6c | 53 69 7a 65 53 68 69 66 |Physical|SizeShif|
|000044d0| 74 29 20 26 20 6b 44 61 | 74 61 52 65 63 6f 72 64 |t) & kDa|taRecord|
|000044e0| 50 68 79 73 69 63 61 6c | 53 69 7a 65 42 69 74 73 |Physical|SizeBits|
|000044f0| 29 20 7c 0d 09 09 09 09 | 09 09 09 09 09 28 28 6e |) |.....|.....((n|
|00004500| 65 77 45 6e 63 6f 64 65 | 64 50 68 79 73 69 63 61 |ewEncode|dPhysica|
|00004510| 6c 53 69 7a 65 20 3c 3c | 20 6b 50 72 65 76 69 6f |lSize <<| kPrevio|
|00004520| 75 73 52 65 63 6f 72 64 | 50 68 79 73 69 63 61 6c |usRecord|Physical|
|00004530| 53 69 7a 65 53 68 69 66 | 74 29 20 26 20 6b 50 72 |SizeShif|t) & kPr|
|00004540| 65 76 69 6f 75 73 52 65 | 63 6f 72 64 50 68 79 73 |eviousRe|cordPhys|
|00004550| 69 63 61 6c 53 69 7a 65 | 42 69 74 73 29 3b 0d 09 |icalSize|Bits);..|
|00004560| 09 74 68 69 73 2d 3e 57 | 72 69 74 65 52 65 63 6f |.this->W|riteReco|
|00004570| 72 64 57 6f 72 64 28 62 | 6c 6f 63 6b 54 6f 54 72 |rdWord(b|lockToTr|
|00004580| 69 6d 2c 20 6b 52 65 63 | 6f 72 64 49 44 46 6c 61 |im, kRec|ordIDFla|
|00004590| 67 73 57 6f 72 64 2c 20 | 74 72 69 6d 42 6c 6f 63 |gsWord, |trimBloc|
|000045a0| 6b 46 6c 61 67 73 29 3b | 0d 09 09 74 68 69 73 2d |kFlags);|...this-|
|000045b0| 3e 57 72 69 74 65 52 65 | 63 6f 72 64 57 6f 72 64 |>WriteRe|cordWord|
|000045c0| 28 6c 65 66 74 4f 76 65 | 72 50 69 65 63 65 2c 20 |(leftOve|rPiece, |
|000045d0| 6b 52 65 63 6f 72 64 49 | 44 46 6c 61 67 73 57 6f |kRecordI|DFlagsWo|
|000045e0| 72 64 2c 20 6c 65 66 74 | 4f 76 65 72 42 6c 6f 63 |rd, left|OverBloc|
|000045f0| 6b 46 6c 61 67 73 29 3b | 0d 09 09 74 68 69 73 2d |kFlags);|...this-|
|00004600| 3e 57 72 69 74 65 52 65 | 63 6f 72 64 57 6f 72 64 |>WriteRe|cordWord|
|00004610| 28 6c 65 66 74 4f 76 65 | 72 50 69 65 63 65 2c 20 |(leftOve|rPiece, |
|00004620| 6b 46 72 65 65 4e 6f 64 | 65 4c 69 6e 6b 42 79 74 |kFreeNod|eLinkByt|
|00004630| 65 2c 20 6b 46 72 65 65 | 52 65 63 6f 72 64 4e 6f |e, kFree|RecordNo|
|00004640| 74 4c 69 6e 6b 65 64 54 | 6f 54 72 65 65 29 3b 0d |tLinkedT|oTree);.|
|00004650| 09 09 74 68 69 73 2d 3e | 57 72 69 74 65 52 65 63 |..this->|WriteRec|
|00004660| 6f 72 64 57 6f 72 64 28 | 6c 65 66 74 4f 76 65 72 |ordWord(|leftOver|
|00004670| 50 69 65 63 65 2c 20 6b | 50 72 65 76 69 6f 75 73 |Piece, k|Previous|
|00004680| 46 72 65 65 4e 6f 64 65 | 4c 69 6e 6b 42 79 74 65 |FreeNode|LinkByte|
|00004690| 2c 20 6b 4e 69 6c 49 6e | 64 65 78 29 3b 0d 09 09 |, kNilIn|dex);...|
|000046a0| 0d 09 09 2f 2f 0d 09 09 | 2f 2f 20 44 6f 6e 27 74 |...//...|// Don't|
|000046b0| 20 66 6f 72 67 65 74 2c | 20 77 68 65 6e 20 73 65 | forget,| when se|
|000046c0| 74 74 69 6e 67 20 74 68 | 65 20 27 70 72 65 76 69 |tting th|e 'previ|
|000046d0| 6f 75 73 20 62 6c 6f 63 | 6b 20 70 68 79 73 69 63 |ous bloc|k physic|
|000046e0| 61 6c 20 73 69 7a 65 27 | 0d 09 09 2f 2f 20 62 69 |al size'|...// bi|
|000046f0| 74 73 2c 20 74 68 61 74 | 20 74 68 65 20 72 65 63 |ts, that| the rec|
|00004700| 6f 72 64 20 62 65 69 6e | 67 20 63 68 61 6e 67 65 |ord bein|g change|
|00004710| 64 20 6d 61 79 20 68 61 | 76 65 20 61 6e 20 61 63 |d may ha|ve an ac|
|00004720| 74 69 76 65 20 63 68 61 | 6e 67 65 20 69 6d 61 67 |tive cha|nge imag|
|00004730| 65 2e 0d 09 09 2f 2f 20 | 49 66 20 74 68 61 74 27 |e....// |If that'|
|00004740| 73 20 74 68 65 20 63 61 | 73 65 2c 20 74 68 65 6e |s the ca|se, then|
|00004750| 20 69 74 20 77 69 6c 6c | 20 62 65 20 6e 65 63 65 | it will| be nece|
|00004760| 73 73 61 72 79 20 74 6f | 20 63 68 61 6e 67 65 20 |ssary to| change |
|00004770| 62 6f 74 68 0d 09 09 2f | 2f 20 74 68 65 20 47 72 |both.../|/ the Gr|
|00004780| 6f 75 70 20 43 6f 6e 74 | 72 6f 6c 20 4f 62 6a 65 |oup Cont|rol Obje|
|00004790| 63 74 27 73 20 70 72 65 | 76 69 6f 75 73 2d 70 68 |ct's pre|vious-ph|
|000047a0| 79 73 69 63 61 6c 2d 73 | 69 7a 65 20 76 61 6c 75 |ysical-s|ize valu|
|000047b0| 65 2c 20 61 6e 64 20 74 | 68 65 0d 09 09 2f 2f 20 |e, and t|he...// |
|000047c0| 63 68 61 6e 67 65 20 69 | 6d 61 67 65 27 73 20 70 |change i|mage's p|
|000047d0| 72 65 76 69 6f 75 73 2d | 70 68 79 73 69 63 61 6c |revious-|physical|
|000047e0| 2d 73 69 7a 65 20 76 61 | 6c 75 65 2e 0d 09 09 2f |-size va|lue..../|
|000047f0| 2f 0d 09 09 69 66 28 62 | 6c 6f 63 6b 54 6f 46 69 |/...if(b|lockToFi|
|00004800| 78 55 70 20 3c 20 28 74 | 68 69 73 2d 3e 46 69 72 |xUp < (t|his->Fir|
|00004810| 73 74 52 65 63 6f 72 64 | 49 6e 64 65 78 28 29 20 |stRecord|Index() |
|00004820| 2b 20 6b 52 65 63 6f 72 | 64 73 50 65 72 47 72 6f |+ kRecor|dsPerGro|
|00004830| 75 70 29 29 0d 09 09 7b | 0d 09 09 09 74 68 69 73 |up))...{|....this|
|00004840| 2d 3e 57 72 69 74 65 54 | 68 72 6f 75 67 68 54 6f |->WriteT|hroughTo|
|00004850| 54 72 61 6e 73 61 63 74 | 69 6f 6e 28 62 6c 6f 63 |Transact|ion(bloc|
|00004860| 6b 54 6f 46 69 78 55 70 | 2c 20 6b 52 65 63 6f 72 |kToFixUp|, kRecor|
|00004870| 64 49 44 46 6c 61 67 73 | 57 6f 72 64 2c 20 28 65 |dIDFlags|Word, (e|
|00004880| 6e 63 6f 64 65 64 53 69 | 7a 65 4c 65 66 74 41 66 |ncodedSi|zeLeftAf|
|00004890| 74 65 72 54 72 69 6d 20 | 3c 3c 20 6b 50 72 65 76 |terTrim |<< kPrev|
|000048a0| 69 6f 75 73 52 65 63 6f | 72 64 50 68 79 73 69 63 |iousReco|rdPhysic|
|000048b0| 61 6c 53 69 7a 65 53 68 | 69 66 74 29 2c 20 6b 50 |alSizeSh|ift), kP|
|000048c0| 72 65 76 69 6f 75 73 52 | 65 63 6f 72 64 50 68 79 |reviousR|ecordPhy|
|000048d0| 73 69 63 61 6c 53 69 7a | 65 42 69 74 73 29 3b 0d |sicalSiz|eBits);.|
|000048e0| 09 09 7d 0d 09 7d 0d 09 | 0d 09 72 65 74 75 72 6e |..}..}..|..return|
|000048f0| 20 6c 65 66 74 4f 76 65 | 72 50 69 65 63 65 3b 0d | leftOve|rPiece;.|
|00004900| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|00004910| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 54 72 69 6d 42 6c |olObject|::TrimBl|
|00004920| 6f 63 6b 0d 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ock..//-|--------|
|00004930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004970| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 54 47 72 6f 75 |-------.|// TGrou|
|00004980| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|00004990| 56 65 72 69 66 79 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |Verify./|/-------|
|000049a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000049b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000049c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000049d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000049e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 76 6f 69 64 20 54 |--------|-.void T|
|000049f0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00004a00| 63 74 3a 3a 56 65 72 69 | 66 79 28 6c 6f 6e 67 20 |ct::Veri|fy(long |
|00004a10| 72 65 63 6f 72 64 49 6e | 64 65 78 2c 20 42 6f 6f |recordIn|dex, Boo|
|00004a20| 6c 65 61 6e 20 76 65 72 | 69 66 79 53 75 62 73 65 |lean ver|ifySubse|
|00004a30| 71 75 65 6e 74 29 0d 7b | 0d 09 6c 6f 6e 67 20 6e |quent).{|..long n|
|00004a40| 65 78 74 52 65 63 6f 72 | 64 20 3d 20 74 68 69 73 |extRecor|d = this|
|00004a50| 2d 3e 4e 65 78 74 52 65 | 63 6f 72 64 49 6e 64 65 |->NextRe|cordInde|
|00004a60| 78 28 72 65 63 6f 72 64 | 49 6e 64 65 78 29 3b 0d |x(record|Index);.|
|00004a70| 09 6c 6f 6e 67 20 70 72 | 65 76 69 6f 75 73 52 65 |.long pr|eviousRe|
|00004a80| 63 6f 72 64 20 3d 20 74 | 68 69 73 2d 3e 50 72 65 |cord = t|his->Pre|
|00004a90| 76 69 6f 75 73 52 65 63 | 6f 72 64 49 6e 64 65 78 |viousRec|ordIndex|
|00004aa0| 28 72 65 63 6f 72 64 49 | 6e 64 65 78 29 3b 0d 09 |(recordI|ndex);..|
|00004ab0| 42 6f 6f 6c 65 61 6e 20 | 6f 75 72 45 6e 63 6f 64 |Boolean |ourEncod|
|00004ac0| 65 64 53 69 7a 65 49 73 | 5a 65 72 6f 20 3d 20 28 |edSizeIs|Zero = (|
|00004ad0| 74 68 69 73 2d 3e 42 6c | 6f 63 6b 45 6e 63 6f 64 |this->Bl|ockEncod|
|00004ae0| 65 64 50 68 79 73 69 63 | 61 6c 53 69 7a 65 28 72 |edPhysic|alSize(r|
|00004af0| 65 63 6f 72 64 49 6e 64 | 65 78 29 20 3d 3d 20 30 |ecordInd|ex) == 0|
|00004b00| 29 3b 0d 09 0d 09 2f 2f | 0d 09 2f 2f 20 50 72 65 |);....//|..// Pre|
|00004b10| 76 69 6f 75 73 52 65 63 | 6f 72 64 20 73 68 6f 75 |viousRec|ord shou|
|00004b20| 6c 64 20 6f 6e 6c 79 20 | 62 65 20 2d 31 20 61 74 |ld only |be -1 at|
|00004b30| 20 74 68 65 20 66 69 72 | 73 74 20 72 65 63 6f 72 | the fir|st recor|
|00004b40| 64 20 69 6e 20 74 68 65 | 20 67 72 6f 75 70 0d 09 |d in the| group..|
|00004b50| 2f 2f 0d 09 69 66 28 70 | 72 65 76 69 6f 75 73 52 |//..if(p|reviousR|
|00004b60| 65 63 6f 72 64 20 3d 3d | 20 2d 31 29 0d 09 7b 0d |ecord ==| -1)..{.|
|00004b70| 09 09 69 66 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |..if(rec|ordIndex|
|00004b80| 20 21 3d 20 74 68 69 73 | 2d 3e 46 69 72 73 74 52 | != this|->FirstR|
|00004b90| 65 63 6f 72 64 49 6e 64 | 65 78 28 29 29 0d 09 09 |ecordInd|ex())...|
|00004ba0| 09 44 65 62 75 67 53 74 | 72 28 22 5c 70 52 65 63 |.DebugSt|r("\pRec|
|00004bb0| 6f 72 64 20 6f 74 68 65 | 72 20 74 68 61 6e 20 74 |ord othe|r than t|
|00004bc0| 68 65 20 66 69 72 73 74 | 20 68 61 64 20 61 20 6e |he first| had a n|
|00004bd0| 69 6c 20 70 72 65 76 69 | 6f 75 73 22 29 3b 0d 09 |il previ|ous");..|
|00004be0| 7d 0d 09 65 6c 73 65 0d | 09 7b 0d 09 09 69 66 28 |}..else.|.{...if(|
|00004bf0| 74 68 69 73 2d 3e 4e 65 | 78 74 52 65 63 6f 72 64 |this->Ne|xtRecord|
|00004c00| 49 6e 64 65 78 28 70 72 | 65 76 69 6f 75 73 52 65 |Index(pr|eviousRe|
|00004c10| 63 6f 72 64 29 20 21 3d | 20 72 65 63 6f 72 64 49 |cord) !=| recordI|
|00004c20| 6e 64 65 78 29 0d 09 09 | 09 44 65 62 75 67 53 74 |ndex)...|.DebugSt|
|00004c30| 72 28 22 5c 70 52 65 63 | 6f 72 64 27 73 20 70 72 |r("\pRec|ord's pr|
|00004c40| 65 76 69 6f 75 73 20 6c | 69 6e 6b 20 64 6f 65 73 |evious l|ink does|
|00004c50| 6e 27 74 20 70 6f 69 6e | 74 20 62 61 63 6b 22 29 |n't poin|t back")|
|00004c60| 3b 0d 0d 09 09 42 6f 6f | 6c 65 61 6e 20 70 72 65 |;....Boo|lean pre|
|00004c70| 76 45 6e 63 6f 64 65 64 | 53 69 7a 65 49 73 5a 65 |vEncoded|SizeIsZe|
|00004c80| 72 6f 20 3d 20 28 74 68 | 69 73 2d 3e 42 6c 6f 63 |ro = (th|is->Bloc|
|00004c90| 6b 45 6e 63 6f 64 65 64 | 50 68 79 73 69 63 61 6c |kEncoded|Physical|
|00004ca0| 53 69 7a 65 28 70 72 65 | 76 69 6f 75 73 52 65 63 |Size(pre|viousRec|
|00004cb0| 6f 72 64 29 20 3d 3d 20 | 30 29 3b 0d 09 09 69 66 |ord) == |0);...if|
|00004cc0| 28 70 72 65 76 45 6e 63 | 6f 64 65 64 53 69 7a 65 |(prevEnc|odedSize|
|00004cd0| 49 73 5a 65 72 6f 20 21 | 3d 20 6f 75 72 45 6e 63 |IsZero !|= ourEnc|
|00004ce0| 6f 64 65 64 53 69 7a 65 | 49 73 5a 65 72 6f 29 0d |odedSize|IsZero).|
|00004cf0| 09 09 09 44 65 62 75 67 | 53 74 72 28 22 5c 70 4d |...Debug|Str("\pM|
|00004d00| 69 78 65 64 20 73 69 6e | 67 6c 65 20 61 6e 64 20 |ixed sin|gle and |
|00004d10| 6d 75 6c 74 69 70 6c 65 | 20 72 65 63 6f 72 64 20 |multiple| record |
|00004d20| 64 61 74 61 20 62 6c 6f | 63 6b 73 20 69 6e 20 6f |data blo|cks in o|
|00004d30| 6e 65 20 67 72 6f 75 70 | 22 29 3b 0d 09 7d 0d 09 |ne group|");..}..|
|00004d40| 0d 09 69 66 28 6e 65 78 | 74 52 65 63 6f 72 64 20 |..if(nex|tRecord |
|00004d50| 21 3d 20 2d 31 29 0d 09 | 7b 0d 09 09 69 66 28 6e |!= -1)..|{...if(n|
|00004d60| 65 78 74 52 65 63 6f 72 | 64 20 3e 20 28 46 69 72 |extRecor|d > (Fir|
|00004d70| 73 74 52 65 63 6f 72 64 | 49 6e 64 65 78 28 29 20 |stRecord|Index() |
|00004d80| 2b 20 6b 52 65 63 6f 72 | 64 73 50 65 72 47 72 6f |+ kRecor|dsPerGro|
|00004d90| 75 70 29 29 0d 09 09 09 | 44 65 62 75 67 53 74 72 |up))....|DebugStr|
|00004da0| 28 22 5c 70 44 61 74 61 | 20 72 65 63 6f 72 64 20 |("\pData| record |
|00004db0| 70 6f 69 6e 74 73 20 70 | 61 73 74 20 74 68 65 20 |points p|ast the |
|00004dc0| 65 6e 64 20 6f 66 20 61 | 20 72 65 63 6f 72 64 20 |end of a| record |
|00004dd0| 67 72 6f 75 70 22 29 3b | 0d 09 09 65 6c 73 65 20 |group");|...else |
|00004de0| 69 66 28 28 6e 65 78 74 | 52 65 63 6f 72 64 20 3c |if((next|Record <|
|00004df0| 20 74 68 69 73 2d 3e 46 | 69 72 73 74 52 65 63 6f | this->F|irstReco|
|00004e00| 72 64 49 6e 64 65 78 28 | 29 20 2b 20 6b 52 65 63 |rdIndex(|) + kRec|
|00004e10| 6f 72 64 73 50 65 72 47 | 72 6f 75 70 29 29 0d 09 |ordsPerG|roup))..|
|00004e20| 09 7b 0d 09 09 09 69 66 | 28 74 68 69 73 2d 3e 50 |.{....if|(this->P|
|00004e30| 72 65 76 69 6f 75 73 52 | 65 63 6f 72 64 49 6e 64 |reviousR|ecordInd|
|00004e40| 65 78 28 6e 65 78 74 52 | 65 63 6f 72 64 29 20 21 |ex(nextR|ecord) !|
|00004e50| 3d 20 72 65 63 6f 72 64 | 49 6e 64 65 78 29 0d 09 |= record|Index)..|
|00004e60| 09 09 09 44 65 62 75 67 | 53 74 72 28 22 5c 70 52 |...Debug|Str("\pR|
|00004e70| 65 63 6f 72 64 27 73 20 | 6e 65 78 74 20 6c 69 6e |ecord's |next lin|
|00004e80| 6b 20 64 6f 65 73 6e 27 | 74 20 70 6f 69 6e 74 20 |k doesn'|t point |
|00004e90| 62 61 63 6b 22 29 3b 0d | 09 09 09 65 6c 73 65 20 |back");.|...else |
|00004ea0| 69 66 28 76 65 72 69 66 | 79 53 75 62 73 65 71 75 |if(verif|ySubsequ|
|00004eb0| 65 6e 74 20 3d 3d 20 74 | 72 75 65 29 0d 09 09 09 |ent == t|rue)....|
|00004ec0| 09 74 68 69 73 2d 3e 56 | 65 72 69 66 79 28 6e 65 |.this->V|erify(ne|
|00004ed0| 78 74 52 65 63 6f 72 64 | 2c 20 74 72 75 65 29 3b |xtRecord|, true);|
|00004ee0| 0d 09 09 7d 0d 09 7d 0d | 7d 20 2f 2f 20 54 47 72 |...}..}.|} // TGr|
|00004ef0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00004f00| 3a 3a 56 65 72 69 66 79 | 0d 0d 2f 2f 2d 2d 2d 2d |::Verify|..//----|
|00004f10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 2f 2f 20 |--------|----.// |
|00004f60| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00004f70| 65 63 74 3a 3a 41 6c 6c | 6f 63 61 74 65 4d 65 6d |ect::All|ocateMem|
|00004f80| 6f 72 79 46 6f 72 52 65 | 63 6f 72 64 44 61 74 61 |oryForRe|cordData|
|00004f90| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00004fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fe0| 2d 2d 2d 0d 76 6f 69 64 | 20 54 47 72 6f 75 70 43 |---.void| TGroupC|
|00004ff0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 41 6c |ontrolOb|ject::Al|
|00005000| 6c 6f 63 61 74 65 4d 65 | 6d 6f 72 79 46 6f 72 52 |locateMe|moryForR|
|00005010| 65 63 6f 72 64 44 61 74 | 61 28 29 0d 7b 0d 09 69 |ecordDat|a().{..i|
|00005020| 66 28 66 52 65 63 6f 72 | 64 44 61 74 61 20 3d 3d |f(fRecor|dData ==|
|00005030| 20 6e 69 6c 29 0d 09 7b | 0d 09 09 66 52 65 63 6f | nil)..{|...fReco|
|00005040| 72 64 44 61 74 61 20 3d | 20 6e 65 77 20 6c 6f 6e |rdData =| new lon|
|00005050| 67 5b 6b 4c 6f 6e 67 57 | 6f 72 64 73 50 65 72 52 |g[kLongW|ordsPerR|
|00005060| 65 63 6f 72 64 20 2a 20 | 6b 52 65 63 6f 72 64 73 |ecord * |kRecords|
|00005070| 50 65 72 47 72 6f 75 70 | 5d 3b 0d 09 09 46 61 69 |PerGroup|];...Fai|
|00005080| 6c 4e 69 6c 28 66 52 65 | 63 6f 72 64 44 61 74 61 |lNil(fRe|cordData|
|00005090| 29 3b 0d 09 7d 0d 7d 20 | 2f 2f 20 54 47 72 6f 75 |);..}.} |// TGrou|
|000050a0| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|000050b0| 41 6c 6c 6f 63 61 74 65 | 4d 65 6d 6f 72 79 46 6f |Allocate|MemoryFo|
|000050c0| 72 52 65 63 6f 72 64 44 | 61 74 61 0d 0d 2f 2f 2d |rRecordD|ata..//-|
|000050d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000050e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000050f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005100| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005110| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00005120| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|00005130| 4f 62 6a 65 63 74 3a 3a | 52 65 61 64 52 65 63 6f |Object::|ReadReco|
|00005140| 72 64 47 72 6f 75 70 46 | 72 6f 6d 44 69 73 6b 0d |rdGroupF|romDisk.|
|00005150| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00005160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051a0| 2d 2d 0d 76 6f 69 64 20 | 54 47 72 6f 75 70 43 6f |--.void |TGroupCo|
|000051b0| 6e 74 72 6f 6c 4f 62 6a | 65 63 74 3a 3a 52 65 61 |ntrolObj|ect::Rea|
|000051c0| 64 52 65 63 6f 72 64 47 | 72 6f 75 70 46 72 6f 6d |dRecordG|roupFrom|
|000051d0| 44 69 73 6b 28 54 41 62 | 73 74 72 61 63 74 42 61 |Disk(TAb|stractBa|
|000051e0| 63 6b 69 6e 67 53 74 6f | 72 65 2a 20 62 61 63 6b |ckingSto|re* back|
|000051f0| 69 6e 67 53 74 6f 72 65 | 54 6f 55 73 65 20 2f 2a |ingStore|ToUse /*|
|00005200| 3d 20 6e 69 6c 2a 2f 29 | 0d 7b 0d 09 52 65 71 75 |= nil*/)|.{..Requ|
|00005210| 69 72 65 28 66 52 65 63 | 6f 72 64 47 72 6f 75 70 |ire(fRec|ordGroup|
|00005220| 48 61 73 43 68 61 6e 67 | 65 64 20 3d 3d 20 66 61 |HasChang|ed == fa|
|00005230| 6c 73 65 29 3b 0d 09 69 | 66 28 66 52 65 63 6f 72 |lse);..i|f(fRecor|
|00005240| 64 44 61 74 61 20 3d 3d | 20 6e 69 6c 29 0d 09 7b |dData ==| nil)..{|
|00005250| 0d 09 09 74 68 69 73 2d | 3e 41 6c 6c 6f 63 61 74 |...this-|>Allocat|
|00005260| 65 4d 65 6d 6f 72 79 46 | 6f 72 52 65 63 6f 72 64 |eMemoryF|orRecord|
|00005270| 44 61 74 61 28 29 3b 0d | 09 09 44 42 44 6f 63 75 |Data();.|..DBDocu|
|00005280| 6d 65 6e 74 28 29 2d 3e | 52 65 61 64 52 65 63 6f |ment()->|ReadReco|
|00005290| 72 64 52 61 6e 67 65 28 | 66 52 65 63 6f 72 64 44 |rdRange(|fRecordD|
|000052a0| 61 74 61 2c 20 74 68 69 | 73 2d 3e 46 69 72 73 74 |ata, thi|s->First|
|000052b0| 52 65 63 6f 72 64 49 6e | 64 65 78 28 29 20 2a 20 |RecordIn|dex() * |
|000052c0| 6b 53 69 6e 67 6c 65 52 | 65 63 6f 72 64 53 69 7a |kSingleR|ecordSiz|
|000052d0| 65 2c 20 6b 4c 6f 6e 67 | 57 6f 72 64 73 50 65 72 |e, kLong|WordsPer|
|000052e0| 52 65 63 6f 72 64 20 2a | 20 6b 52 65 63 6f 72 64 |Record *| kRecord|
|000052f0| 73 50 65 72 47 72 6f 75 | 70 20 2a 20 73 69 7a 65 |sPerGrou|p * size|
|00005300| 6f 66 28 6c 6f 6e 67 29 | 2c 20 62 61 63 6b 69 6e |of(long)|, backin|
|00005310| 67 53 74 6f 72 65 54 6f | 55 73 65 29 3b 0d 09 09 |gStoreTo|Use);...|
|00005320| 66 52 65 63 6f 72 64 47 | 72 6f 75 70 48 61 73 43 |fRecordG|roupHasC|
|00005330| 68 61 6e 67 65 64 20 3d | 20 66 61 6c 73 65 3b 0d |hanged =| false;.|
|00005340| 09 7d 0d 7d 20 2f 2f 20 | 54 47 72 6f 75 70 43 6f |.}.} // |TGroupCo|
|00005350| 6e 74 72 6f 6c 4f 62 6a | 65 63 74 3a 3a 52 65 61 |ntrolObj|ect::Rea|
|00005360| 64 52 65 63 6f 72 64 47 | 72 6f 75 70 46 72 6f 6d |dRecordG|roupFrom|
|00005370| 44 69 73 6b 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |Disk..//|--------|
|00005380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053c0| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|000053d0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|000053e0| 3a 46 6c 75 73 68 43 68 | 61 6e 67 65 73 54 6f 44 |:FlushCh|angesToD|
|000053f0| 69 73 6b 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |isk.//--|--------|
|00005400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005420| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005430| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005440| 2d 2d 2d 2d 2d 2d 0d 76 | 6f 69 64 20 54 47 72 6f |------.v|oid TGro|
|00005450| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00005460| 3a 46 6c 75 73 68 43 68 | 61 6e 67 65 73 54 6f 44 |:FlushCh|angesToD|
|00005470| 69 73 6b 28 54 41 62 73 | 74 72 61 63 74 42 61 63 |isk(TAbs|tractBac|
|00005480| 6b 69 6e 67 53 74 6f 72 | 65 2a 20 62 61 63 6b 69 |kingStor|e* backi|
|00005490| 6e 67 53 74 6f 72 65 54 | 6f 55 73 65 20 2f 2a 3d |ngStoreT|oUse /*=|
|000054a0| 20 6e 69 6c 2a 2f 29 0d | 7b 0d 09 69 66 28 28 66 | nil*/).|{..if((f|
|000054b0| 52 65 63 6f 72 64 44 61 | 74 61 20 21 3d 20 6e 69 |RecordDa|ta != ni|
|000054c0| 6c 29 20 26 26 20 66 52 | 65 63 6f 72 64 47 72 6f |l) && fR|ecordGro|
|000054d0| 75 70 48 61 73 43 68 61 | 6e 67 65 64 29 0d 09 09 |upHasCha|nged)...|
|000054e0| 44 42 44 6f 63 75 6d 65 | 6e 74 28 29 2d 3e 57 72 |DBDocume|nt()->Wr|
|000054f0| 69 74 65 52 65 63 6f 72 | 64 52 61 6e 67 65 28 66 |iteRecor|dRange(f|
|00005500| 52 65 63 6f 72 64 44 61 | 74 61 2c 20 74 68 69 73 |RecordDa|ta, this|
|00005510| 2d 3e 46 69 72 73 74 52 | 65 63 6f 72 64 49 6e 64 |->FirstR|ecordInd|
|00005520| 65 78 28 29 20 2a 20 6b | 53 69 6e 67 6c 65 52 65 |ex() * k|SingleRe|
|00005530| 63 6f 72 64 53 69 7a 65 | 2c 20 6b 4c 6f 6e 67 57 |cordSize|, kLongW|
|00005540| 6f 72 64 73 50 65 72 52 | 65 63 6f 72 64 20 2a 20 |ordsPerR|ecord * |
|00005550| 6b 52 65 63 6f 72 64 73 | 50 65 72 47 72 6f 75 70 |kRecords|PerGroup|
|00005560| 20 2a 20 73 69 7a 65 6f | 66 28 6c 6f 6e 67 29 2c | * sizeo|f(long),|
|00005570| 20 62 61 63 6b 69 6e 67 | 53 74 6f 72 65 54 6f 55 | backing|StoreToU|
|00005580| 73 65 29 3b 0d 09 66 52 | 65 63 6f 72 64 47 72 6f |se);..fR|ecordGro|
|00005590| 75 70 48 61 73 43 68 61 | 6e 67 65 64 20 3d 20 66 |upHasCha|nged = f|
|000055a0| 61 6c 73 65 3b 0d 7d 20 | 2f 2f 20 54 47 72 6f 75 |alse;.} |// TGrou|
|000055b0| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|000055c0| 46 6c 75 73 68 43 68 61 | 6e 67 65 73 54 6f 44 69 |FlushCha|ngesToDi|
|000055d0| 73 6b 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |sk..//--|--------|
|000055e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000055f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005600| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005610| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005620| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00005630| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 50 |ControlO|bject::P|
|00005640| 75 72 67 65 52 65 63 6f | 72 64 47 72 6f 75 70 46 |urgeReco|rdGroupF|
|00005650| 72 6f 6d 4d 65 6d 6f 72 | 79 0d 2f 2f 2d 2d 2d 2d |romMemor|y.//----|
|00005660| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005670| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005680| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005690| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 76 6f 69 |--------|----.voi|
|000056b0| 64 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |d TGroup|ControlO|
|000056c0| 62 6a 65 63 74 3a 3a 50 | 75 72 67 65 52 65 63 6f |bject::P|urgeReco|
|000056d0| 72 64 47 72 6f 75 70 46 | 72 6f 6d 4d 65 6d 6f 72 |rdGroupF|romMemor|
|000056e0| 79 28 29 0d 7b 0d 09 2f | 2f 0d 09 2f 2f 20 4e 45 |y().{../|/..// NE|
|000056f0| 56 45 52 20 70 75 72 67 | 65 20 69 66 20 77 65 20 |VER purg|e if we |
|00005700| 63 61 6e 6e 6f 74 20 66 | 6c 75 73 68 21 20 20 28 |cannot f|lush! (|
|00005710| 53 68 6f 75 6c 64 20 68 | 61 76 65 20 61 20 62 65 |Should h|ave a be|
|00005720| 74 74 65 72 20 65 72 72 | 6f 72 20 6e 75 6d 62 65 |tter err|or numbe|
|00005730| 72 2c 20 70 65 72 68 61 | 70 73 29 0d 09 2f 2f 0d |r, perha|ps)..//.|
|00005740| 09 69 66 28 74 68 69 73 | 2d 3e 44 42 44 6f 63 75 |.if(this|->DBDocu|
|00005750| 6d 65 6e 74 28 29 2d 3e | 43 61 6e 53 61 76 65 44 |ment()->|CanSaveD|
|00005760| 6f 63 75 6d 65 6e 74 28 | 29 29 0d 09 09 46 61 69 |ocument(|))...Fai|
|00005770| 6c 45 72 72 28 2d 31 29 | 3b 0d 09 0d 09 69 66 28 |lErr(-1)|;....if(|
|00005780| 66 52 65 63 6f 72 64 47 | 72 6f 75 70 48 61 73 43 |fRecordG|roupHasC|
|00005790| 68 61 6e 67 65 64 29 0d | 09 09 74 68 69 73 2d 3e |hanged).|..this->|
|000057a0| 46 6c 75 73 68 43 68 61 | 6e 67 65 73 54 6f 44 69 |FlushCha|ngesToDi|
|000057b0| 73 6b 28 29 3b 0d 09 64 | 65 6c 65 74 65 20 5b 5d |sk();..d|elete []|
|000057c0| 20 66 52 65 63 6f 72 64 | 44 61 74 61 3b 0d 09 66 | fRecord|Data;..f|
|000057d0| 52 65 63 6f 72 64 44 61 | 74 61 20 3d 20 6e 69 6c |RecordDa|ta = nil|
|000057e0| 3b 0d 7d 20 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |;.} // T|GroupCon|
|000057f0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 50 75 72 67 |trolObje|ct::Purg|
|00005800| 65 52 65 63 6f 72 64 47 | 72 6f 75 70 46 72 6f 6d |eRecordG|roupFrom|
|00005810| 4d 65 6d 6f 72 79 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |Memory..|//------|
|00005820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 47 |--------|--.// TG|
|00005870| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00005880| 74 3a 3a 50 75 72 67 65 | 49 66 55 6e 72 65 66 65 |t::Purge|IfUnrefe|
|00005890| 72 65 6e 63 65 64 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |renced./|/-------|
|000058a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000058b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000058c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000058d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000058e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 76 6f 69 64 20 54 |--------|-.void T|
|000058f0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00005900| 63 74 3a 3a 50 75 72 67 | 65 49 66 55 6e 72 65 66 |ct::Purg|eIfUnref|
|00005910| 65 72 65 6e 63 65 64 28 | 29 0d 7b 0d 23 69 66 20 |erenced(|).{.#if |
|00005920| 30 0d 09 42 6f 6f 6c 65 | 61 6e 20 72 65 66 65 72 |0..Boole|an refer|
|00005930| 65 6e 63 65 64 20 3d 20 | 66 61 6c 73 65 3b 0d 09 |enced = |false;..|
|00005940| 6c 6f 6e 67 20 69 3b 0d | 09 0d 09 66 6f 72 28 69 |long i;.|...for(i|
|00005950| 3d 30 3b 69 3c 6b 52 65 | 63 6f 72 64 73 50 65 72 |=0;i<kRe|cordsPer|
|00005960| 47 72 6f 75 70 3b 2b 2b | 69 29 0d 09 7b 0d 09 09 |Group;++|i)..{...|
|00005970| 69 66 28 28 66 52 65 63 | 6f 72 64 43 75 72 73 6f |if((fRec|ordCurso|
|00005980| 72 73 5b 69 5d 20 21 3d | 20 6e 69 6c 29 20 26 26 |rs[i] !=| nil) &&|
|00005990| 20 28 66 52 65 63 6f 72 | 64 43 75 72 73 6f 72 73 | (fRecor|dCursors|
|000059a0| 5b 69 5d 2d 3e 48 61 73 | 52 65 66 65 72 65 6e 63 |[i]->Has|Referenc|
|000059b0| 65 28 29 29 29 0d 09 09 | 7b 0d 09 09 09 72 65 66 |e()))...|{....ref|
|000059c0| 65 72 65 6e 63 65 64 20 | 3d 20 74 72 75 65 3b 0d |erenced |= true;.|
|000059d0| 09 09 09 62 72 65 61 6b | 3b 0d 09 09 7d 0d 09 7d |...break|;...}..}|
|000059e0| 0d 09 0d 09 69 66 28 72 | 65 66 65 72 65 6e 63 65 |....if(r|eference|
|000059f0| 64 20 3d 3d 20 66 61 6c | 73 65 29 0d 09 7b 0d 09 |d == fal|se)..{..|
|00005a00| 09 66 6f 72 28 69 3d 30 | 3b 69 3c 6b 52 65 63 6f |.for(i=0|;i<kReco|
|00005a10| 72 64 73 50 65 72 47 72 | 6f 75 70 3b 2b 2b 69 29 |rdsPerGr|oup;++i)|
|00005a20| 0d 09 09 7b 0d 09 09 09 | 69 66 28 66 52 65 63 6f |...{....|if(fReco|
|00005a30| 72 64 43 75 72 73 6f 72 | 73 5b 69 5d 20 21 3d 20 |rdCursor|s[i] != |
|00005a40| 6e 69 6c 29 0d 09 09 09 | 7b 0d 09 09 09 09 64 65 |nil)....|{.....de|
|00005a50| 6c 65 74 65 20 66 52 65 | 63 6f 72 64 43 75 72 73 |lete fRe|cordCurs|
|00005a60| 6f 72 73 5b 69 5d 3b 0d | 09 09 09 09 66 52 65 63 |ors[i];.|....fRec|
|00005a70| 6f 72 64 43 75 72 73 6f | 72 73 5b 69 5d 20 3d 20 |ordCurso|rs[i] = |
|00005a80| 6e 69 6c 3b 0d 09 09 09 | 7d 0d 09 09 7d 0d 09 09 |nil;....|}...}...|
|00005a90| 0d 09 09 49 4e 48 45 52 | 49 54 45 44 3a 3a 50 75 |...INHER|ITED::Pu|
|00005aa0| 72 67 65 49 66 55 6e 72 | 65 66 65 72 65 6e 63 65 |rgeIfUnr|eference|
|00005ab0| 64 28 29 3b 0d 09 7d 0d | 23 65 6e 64 69 66 0d 7d |d();..}.|#endif.}|
|00005ac0| 20 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f | // TGro|upContro|
|00005ad0| 6c 4f 62 6a 65 63 74 3a | 3a 50 75 72 67 65 49 66 |lObject:|:PurgeIf|
|00005ae0| 55 6e 72 65 66 65 72 65 | 6e 63 65 64 0d 0d 2f 2f |Unrefere|nced..//|
|00005af0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005b00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005b40| 0d 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |.// TGro|upContro|
|00005b50| 6c 4f 62 6a 65 63 74 3a | 3a 49 6e 69 74 69 61 6c |lObject:|:Initial|
|00005b60| 69 7a 65 4e 65 77 47 72 | 6f 75 70 0d 2f 2f 0d 2f |izeNewGr|oup.//./|
|00005b70| 2f 20 54 68 69 73 20 72 | 6f 75 74 69 6e 65 20 6d |/ This r|outine m|
|00005b80| 61 6b 65 73 20 61 20 62 | 75 6e 63 68 20 28 36 34 |akes a b|unch (64|
|00005b90| 29 20 6f 66 20 6e 65 77 | 20 64 61 74 61 62 61 73 |) of new| databas|
|00005ba0| 65 20 72 65 63 6f 72 64 | 73 2e 20 20 4d 6f 73 74 |e record|s. Most|
|00005bb0| 20 28 36 33 29 20 6f 66 | 0d 2f 2f 20 74 68 65 73 | (63) of|.// thes|
|00005bc0| 65 20 61 72 65 20 69 6d | 6d 65 64 69 61 74 65 6c |e are im|mediatel|
|00005bd0| 79 20 70 75 73 68 65 64 | 20 6f 6e 74 6f 20 74 68 |y pushed| onto th|
|00005be0| 65 20 64 62 20 72 65 63 | 6f 72 64 20 66 72 65 65 |e db rec|ord free|
|00005bf0| 20 6c 69 73 74 2e 20 20 | 4f 6e 65 20 6f 66 20 74 | list. |One of t|
|00005c00| 68 65 0d 2f 2f 20 6e 65 | 77 20 72 65 63 6f 72 64 |he.// ne|w record|
|00005c10| 73 20 69 73 20 72 65 74 | 75 72 6e 65 64 2c 20 75 |s is ret|urned, u|
|00005c20| 6e 6c 69 6e 6b 65 64 20 | 61 6e 64 20 72 65 61 64 |nlinked |and read|
|00005c30| 79 20 74 6f 20 75 73 65 | 2e 0d 2f 2f 2d 2d 2d 2d |y to use|..//----|
|00005c40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 6c 6f 6e |--------|----.lon|
|00005c90| 67 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |g TGroup|ControlO|
|00005ca0| 62 6a 65 63 74 3a 3a 49 | 6e 69 74 69 61 6c 69 7a |bject::I|nitializ|
|00005cb0| 65 4e 65 77 47 72 6f 75 | 70 28 6c 6f 6e 67 20 6e |eNewGrou|p(long n|
|00005cc0| 65 78 74 46 72 65 65 4e | 6f 64 65 2c 20 6c 6f 6e |extFreeN|ode, lon|
|00005cd0| 67 26 20 6f 6e 65 46 72 | 65 65 49 6e 64 65 78 29 |g& oneFr|eeIndex)|
|00005ce0| 0d 7b 0d 09 74 68 69 73 | 2d 3e 41 6c 6c 6f 63 61 |.{..this|->Alloca|
|00005cf0| 74 65 4d 65 6d 6f 72 79 | 46 6f 72 52 65 63 6f 72 |teMemory|ForRecor|
|00005d00| 64 44 61 74 61 28 29 3b | 0d 09 0d 09 2f 2f 0d 09 |dData();|....//..|
|00005d10| 2f 2f 20 4d 61 6b 65 20 | 6b 52 65 63 6f 72 64 73 |// Make |kRecords|
|00005d20| 50 65 72 47 72 6f 75 70 | 20 66 72 65 65 20 44 42 |PerGroup| free DB|
|00005d30| 20 72 65 63 6f 72 64 73 | 0d 09 2f 2f 0d 09 66 6f | records|..//..fo|
|00005d40| 72 28 6c 6f 6e 67 20 69 | 3d 74 68 69 73 2d 3e 46 |r(long i|=this->F|
|00005d50| 69 72 73 74 52 65 63 6f | 72 64 49 6e 64 65 78 28 |irstReco|rdIndex(|
|00005d60| 29 20 2b 20 6b 52 65 63 | 6f 72 64 73 50 65 72 47 |) + kRec|ordsPerG|
|00005d70| 72 6f 75 70 20 2d 20 31 | 3b 69 3e 3d 20 74 68 69 |roup - 1|;i>= thi|
|00005d80| 73 2d 3e 46 69 72 73 74 | 52 65 63 6f 72 64 49 6e |s->First|RecordIn|
|00005d90| 64 65 78 28 29 3b 2d 2d | 69 29 0d 09 7b 0d 09 09 |dex();--|i)..{...|
|00005da0| 6c 6f 6e 67 2a 20 64 61 | 74 61 20 3d 20 74 68 69 |long* da|ta = thi|
|00005db0| 73 2d 3e 52 65 63 6f 72 | 64 44 61 74 61 28 69 29 |s->Recor|dData(i)|
|00005dc0| 3b 0d 09 09 64 61 74 61 | 5b 6b 46 72 65 65 4e 6f |;...data|[kFreeNo|
|00005dd0| 64 65 49 44 42 79 74 65 | 5d 20 3d 20 6b 46 72 65 |deIDByte|] = kFre|
|00005de0| 65 44 42 52 65 63 6f 72 | 64 49 44 3b 0d 09 09 64 |eDBRecor|dID;...d|
|00005df0| 61 74 61 5b 6b 46 72 65 | 65 4e 6f 64 65 4c 69 6e |ata[kFre|eNodeLin|
|00005e00| 6b 42 79 74 65 5d 20 3d | 20 6e 65 78 74 46 72 65 |kByte] =| nextFre|
|00005e10| 65 4e 6f 64 65 3b 0d 09 | 09 6e 65 78 74 46 72 65 |eNode;..|.nextFre|
|00005e20| 65 4e 6f 64 65 20 3d 20 | 69 3b 0d 09 7d 0d 09 0d |eNode = |i;..}...|
|00005e30| 09 2f 2f 0d 09 2f 2f 20 | 4d 61 72 6b 20 74 68 65 |.//..// |Mark the|
|00005e40| 20 66 69 72 73 74 20 72 | 65 63 6f 72 64 20 61 73 | first r|ecord as|
|00005e50| 20 6e 6f 74 20 62 65 69 | 6e 67 20 61 74 74 61 63 | not bei|ng attac|
|00005e60| 68 65 64 20 74 6f 20 74 | 68 65 20 66 72 65 65 20 |hed to t|he free |
|00005e70| 6c 69 73 74 0d 09 2f 2f | 0d 09 74 68 69 73 2d 3e |list..//|..this->|
|00005e80| 52 65 63 6f 72 64 44 61 | 74 61 28 74 68 69 73 2d |RecordDa|ta(this-|
|00005e90| 3e 46 69 72 73 74 52 65 | 63 6f 72 64 49 6e 64 65 |>FirstRe|cordInde|
|00005ea0| 78 28 29 29 5b 6b 46 72 | 65 65 4e 6f 64 65 4c 69 |x())[kFr|eeNodeLi|
|00005eb0| 6e 6b 42 79 74 65 5d 20 | 3d 20 6b 46 72 65 65 52 |nkByte] |= kFreeR|
|00005ec0| 65 63 6f 72 64 4e 6f 74 | 4c 69 6e 6b 65 64 54 6f |ecordNot|LinkedTo|
|00005ed0| 54 72 65 65 3b 0d 09 0d | 09 2f 2f 0d 09 2f 2f 20 |Tree;...|.//..// |
|00005ee0| 54 68 65 20 66 69 72 73 | 74 20 72 65 63 6f 72 64 |The firs|t record|
|00005ef0| 20 69 6e 20 74 68 65 20 | 67 72 6f 75 70 20 69 73 | in the |group is|
|00005f00| 20 6e 6f 74 20 6c 69 6e | 6b 65 64 20 74 6f 20 74 | not lin|ked to t|
|00005f10| 68 65 20 66 72 65 65 20 | 6c 69 73 74 2e 0d 09 2f |he free |list.../|
|00005f20| 2f 20 54 68 65 20 73 65 | 63 6f 6e 64 20 72 65 63 |/ The se|cond rec|
|00005f30| 6f 72 64 20 69 6e 20 74 | 68 65 20 67 72 6f 75 70 |ord in t|he group|
|00005f40| 20 69 73 20 72 65 74 75 | 72 6e 65 64 20 61 73 20 | is retu|rned as |
|00005f50| 74 68 65 20 6e 65 77 20 | 66 69 72 73 74 20 66 72 |the new |first fr|
|00005f60| 65 65 20 72 65 63 6f 72 | 64 2e 0d 09 2f 2f 0d 09 |ee recor|d...//..|
|00005f70| 6f 6e 65 46 72 65 65 49 | 6e 64 65 78 20 3d 20 74 |oneFreeI|ndex = t|
|00005f80| 68 69 73 2d 3e 46 69 72 | 73 74 52 65 63 6f 72 64 |his->Fir|stRecord|
|00005f90| 49 6e 64 65 78 28 29 3b | 0d 09 72 65 74 75 72 6e |Index();|..return|
|00005fa0| 20 74 68 69 73 2d 3e 46 | 69 72 73 74 52 65 63 6f | this->F|irstReco|
|00005fb0| 72 64 49 6e 64 65 78 28 | 29 20 2b 20 31 3b 0d 7d |rdIndex(|) + 1;.}|
|00005fc0| 20 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f | // TGro|upContro|
|00005fd0| 6c 4f 62 6a 65 63 74 3a | 3a 49 6e 69 74 69 61 6c |lObject:|:Initial|
|00005fe0| 69 7a 65 4e 65 77 47 72 | 6f 75 70 0d 0d 2f 2f 2d |izeNewGr|oup..//-|
|00005ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006020| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006030| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00006040| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|00006050| 4f 62 6a 65 63 74 3a 3a | 49 6e 69 74 69 61 6c 69 |Object::|Initiali|
|00006060| 7a 65 4e 65 77 44 61 74 | 61 47 72 6f 75 70 0d 2f |zeNewDat|aGroup./|
|00006070| 2f 0d 2f 2f 20 54 68 69 | 73 20 72 6f 75 74 69 6e |/.// Thi|s routin|
|00006080| 65 20 6d 61 6b 65 73 20 | 6f 6e 65 20 6f 72 20 74 |e makes |one or t|
|00006090| 77 6f 20 66 72 65 65 20 | 64 61 74 61 20 72 65 63 |wo free |data rec|
|000060a0| 6f 72 64 73 2e 20 20 42 | 6f 74 68 20 61 72 65 20 |ords. B|oth are |
|000060b0| 72 65 74 75 72 6e 65 64 | 20 75 6e 6c 69 6e 6b 65 |returned| unlinke|
|000060c0| 64 0d 2f 2f 20 74 6f 20 | 74 68 65 20 74 72 65 65 |d.// to |the tree|
|000060d0| 2e 20 20 4f 6e 65 20 69 | 73 20 61 6c 77 61 79 73 |. One i|s always|
|000060e0| 20 6f 66 20 73 69 7a 65 | 20 27 64 65 73 69 72 65 | of size| 'desire|
|000060f0| 64 45 6e 63 6f 64 65 64 | 50 68 79 73 69 63 61 6c |dEncoded|Physical|
|00006100| 53 69 7a 65 27 3b 20 74 | 68 65 20 6f 74 68 65 72 |Size'; t|he other|
|00006110| 0d 2f 2f 20 69 73 20 68 | 6f 77 65 76 65 72 20 62 |.// is h|owever b|
|00006120| 69 67 20 69 74 20 6e 65 | 65 64 73 20 74 6f 20 62 |ig it ne|eds to b|
|00006130| 65 20 74 6f 20 66 69 6c | 6c 20 6f 75 74 20 74 68 |e to fil|l out th|
|00006140| 65 20 72 65 73 74 20 6f | 66 20 74 68 65 20 72 65 |e rest o|f the re|
|00006150| 63 6f 72 64 20 67 72 6f | 75 70 2e 0d 2f 2f 2d 2d |cord gro|up..//--|
|00006160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000061a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 6c |--------|------.l|
|000061b0| 6f 6e 67 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |ong TGro|upContro|
|000061c0| 6c 4f 62 6a 65 63 74 3a | 3a 49 6e 69 74 69 61 6c |lObject:|:Initial|
|000061d0| 69 7a 65 4e 65 77 44 61 | 74 61 47 72 6f 75 70 28 |izeNewDa|taGroup(|
|000061e0| 6c 6f 6e 67 20 64 65 73 | 69 72 65 64 45 6e 63 6f |long des|iredEnco|
|000061f0| 64 65 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 2c |dedPhysi|calSize,|
|00006200| 20 6c 6f 6e 67 26 20 6c | 65 66 74 4f 76 65 72 42 | long& l|eftOverB|
|00006210| 6c 6f 63 6b 29 0d 7b 0d | 09 2f 2f 0d 09 2f 2f 20 |lock).{.|.//..// |
|00006220| 4d 61 6b 65 20 6f 6e 65 | 20 34 4b 20 64 61 74 61 |Make one| 4K data|
|00006230| 20 72 65 63 6f 72 64 0d | 09 2f 2f 0d 09 74 68 69 | record.|.//..thi|
|00006240| 73 2d 3e 41 6c 6c 6f 63 | 61 74 65 4d 65 6d 6f 72 |s->Alloc|ateMemor|
|00006250| 79 46 6f 72 52 65 63 6f | 72 64 44 61 74 61 28 29 |yForReco|rdData()|
|00006260| 3b 0d 09 6c 6f 6e 67 2a | 20 64 61 74 61 20 3d 20 |;..long*| data = |
|00006270| 74 68 69 73 2d 3e 52 65 | 63 6f 72 64 44 61 74 61 |this->Re|cordData|
|00006280| 28 74 68 69 73 2d 3e 46 | 69 72 73 74 52 65 63 6f |(this->F|irstReco|
|00006290| 72 64 49 6e 64 65 78 28 | 29 29 3b 0d 09 64 61 74 |rdIndex(|));..dat|
|000062a0| 61 5b 6b 46 72 65 65 4e | 6f 64 65 49 44 42 79 74 |a[kFreeN|odeIDByt|
|000062b0| 65 5d 20 3d 20 6b 46 72 | 65 65 44 61 74 61 52 65 |e] = kFr|eeDataRe|
|000062c0| 63 6f 72 64 49 44 20 2b | 20 28 36 33 4c 20 3c 3c |cordID +| (63L <<|
|000062d0| 20 6b 44 61 74 61 52 65 | 63 6f 72 64 50 68 79 73 | kDataRe|cordPhys|
|000062e0| 69 63 61 6c 53 69 7a 65 | 53 68 69 66 74 29 3b 0d |icalSize|Shift);.|
|000062f0| 09 64 61 74 61 5b 6b 46 | 72 65 65 4e 6f 64 65 4c |.data[kF|reeNodeL|
|00006300| 69 6e 6b 42 79 74 65 5d | 20 3d 20 6b 46 72 65 65 |inkByte]| = kFree|
|00006310| 52 65 63 6f 72 64 4e 6f | 74 4c 69 6e 6b 65 64 54 |RecordNo|tLinkedT|
|00006320| 6f 54 72 65 65 3b 0d 09 | 64 61 74 61 5b 6b 50 72 |oTree;..|data[kPr|
|00006330| 65 76 69 6f 75 73 46 72 | 65 65 4e 6f 64 65 4c 69 |eviousFr|eeNodeLi|
|00006340| 6e 6b 42 79 74 65 5d 20 | 3d 20 6b 4e 69 6c 49 6e |nkByte] |= kNilIn|
|00006350| 64 65 78 3b 0d 09 0d 09 | 6c 6f 6e 67 20 6f 6e 65 |dex;....|long one|
|00006360| 46 72 65 65 49 6e 64 65 | 78 20 3d 20 74 68 69 73 |FreeInde|x = this|
|00006370| 2d 3e 46 69 72 73 74 52 | 65 63 6f 72 64 49 6e 64 |->FirstR|ecordInd|
|00006380| 65 78 28 29 3b 0d 09 6c | 65 66 74 4f 76 65 72 42 |ex();..l|eftOverB|
|00006390| 6c 6f 63 6b 20 3d 20 74 | 68 69 73 2d 3e 54 72 69 |lock = t|his->Tri|
|000063a0| 6d 42 6c 6f 63 6b 28 6f | 6e 65 46 72 65 65 49 6e |mBlock(o|neFreeIn|
|000063b0| 64 65 78 2c 20 64 65 73 | 69 72 65 64 45 6e 63 6f |dex, des|iredEnco|
|000063c0| 64 65 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 29 |dedPhysi|calSize)|
|000063d0| 3b 0d 0d 09 72 65 74 75 | 72 6e 20 6f 6e 65 46 72 |;...retu|rn oneFr|
|000063e0| 65 65 49 6e 64 65 78 3b | 0d 7d 20 2f 2f 20 54 47 |eeIndex;|.} // TG|
|000063f0| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.